python—高效的多进程文件解析和进程间重复数据消除

hrirmatl  于 2021-06-15  发布在  ClickHouse
关注(0)|答案(0)|浏览(240)

其任务是解析数百GB的文件(数百万个小文件)并将它们插入数据库。为了有效地完成这项工作,可以在大量进程之间分割文件,以便每个进程处理一大块文件。
问题是,数据库(clickhouse)不支持唯一主键,并且replacingmergetree表引擎(应该处理重复的)不可靠。因此,应在插入之前处理重复项。
挑战在于进程之间的通信。我尝试过两种失败的方法:
实现一组共享的ID
实现一个队列,读取/转换进程在处理单个中央进程从中读取并过滤掉重复的文件后写入该队列
这两个进程都面临着类似的问题——一旦处理了一定数量的文件,它们就会花费大量时间等待对队列或共享集的访问。有一个特定的块大小集,它触发插入数据库。这是必要的,否则ram就会耗尽。一旦所有线程第一次达到该块大小,执行就会停止,因为从队列或共享集写入/读取文件的速度赶不上30+个进程处理文件的速度。
什么是正确有效的方法来实现这一点

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题