我被要求构建一个可以比较两个大型数据集的协调工具(我们可以假设输入源是两个优点)。
excel中的每一行包含40-50个列,记录将在每个列级别上进行比较。每个文件包含近300万条记录,或者大约4-5 GB的data.data可能不是排序格式的。
如果我能得到一些提示,我会很感激的。以下技术是否适合
发布于 2017-07-04 07:34:34
我也一直在做同样的事情-
您可以使用Pyspark/Scala将csv文件加载到临时表中,并在创建的临时表之上进行查询。
发布于 2017-10-04 12:44:11
首先是一个警告:
编写协调工具包含了许多小麻烦和边缘情况,如日期格式、数字格式(数字逗号、科学表示法等)、复合键、阈值、忽略列、忽略页眉/页脚等。
如果您只有一个要使用定义良好的输入的文件,那么请考虑自己执行它。
但是,如果您可能会尝试将其扩展为更通用的,那么如果可以的话,请为现有的解决方案付费,因为从长远来看,它会更便宜。
潜在解决办法:
分布式进程的困难在于如何匹配未排序文件中的密钥。
在一个进程中全部运行它的问题是内存。
作为一个商业rec工具,我采用的方法是将CSV保存到h2中的表中,并使用SQL进行区分。
在这种情况下,H2比Oracle快得多。
如果您的数据结构良好,您可以利用h2直接从CSV加载的能力,如果将结果保存在表中,也可以将输出写入CSV,也可以使用其他框架编写更结构化的输出或将结果流到网页。
如果您的格式是xls(x)而不是CSV,则应该对各种库进行性能测试,以读取文件,因为在处理该大小时存在巨大差异。
发布于 2020-09-20 05:24:00
我一直在努力解决上述问题,这就是解决办法。https://github.com/tharun026/SparkDataReconciler到目前为止的先决条件是
该工具为每一列提供匹配百分比,这样您就可以了解哪些转换出错了。
https://stackoverflow.com/questions/41986313
复制相似问题