我被要求建立一个协调工具,可以比较两个大的数据集(我们可以假设输入源是两个优秀的)。excel中的每一行包含40-50列,并记录在每一列级别进行比较。每个文件包含近300万条记录或大约4-5 gb的数据。[数据可能不是排序格式]如果我能得到一些提示,我将不胜感激。以下技术是否合适ApacheSparkapache spark+ignite[假设在时间帧之间进行实时协调]apache ignite+apache hadoop任何关于建立内部工具的建议。
p5cysglq1#
我一直在研究上述问题,这里是解决办法。https://github.com/tharun026/sparkdatareconciler 目前的先决条件是两个数据集的列数应该相同目前,该解决方案只接受镶块。该工具为每列提供匹配百分比,以便您可以了解哪个转换出错。
ep6jt1vc2#
首先是警告:编写一个协调工具包含许多小麻烦和边缘情况,如日期格式、数字格式(数字中的逗号、科学记数法等)、复合键、阈值、忽略列、忽略页眉/页脚等。如果只有一个文件需要记录,并且输入定义良好,那么可以考虑自己进行记录。但是,如果您可能尝试将其扩展为更通用的解决方案,那么如果可以的话,请为现有的解决方案付费,因为从长远来看,它会更便宜。潜在解决方案:分布式进程的困难在于如何匹配未排序文件中的键。在一个进程中运行这一切的问题是内存。对于商业rec工具,我采用的方法是将csv保存到h2中的表中,并使用sql进行差异化。h2在这方面比oracle快得多。如果您的数据结构良好,您可以利用h2直接从csv加载的功能,如果您将结果保存在一个表中,您也可以将输出写入csv,或者您可以使用其他框架编写更结构化的输出,或者将结果流式传输到网页。如果您的格式是xls(x)而不是csv,您应该对各种库进行性能测试以读取文件,因为在处理该大小时存在巨大差异。
2eafrhcq3#
我也一直在做同样的工作-您可以使用pyspark/scala将csv文件加载到临时表中,并在创建的临时表上进行查询。
3条答案
按热度按时间p5cysglq1#
我一直在研究上述问题,这里是解决办法。https://github.com/tharun026/sparkdatareconciler 目前的先决条件是
两个数据集的列数应该相同
目前,该解决方案只接受镶块。
该工具为每列提供匹配百分比,以便您可以了解哪个转换出错。
ep6jt1vc2#
首先是警告:
编写一个协调工具包含许多小麻烦和边缘情况,如日期格式、数字格式(数字中的逗号、科学记数法等)、复合键、阈值、忽略列、忽略页眉/页脚等。
如果只有一个文件需要记录,并且输入定义良好,那么可以考虑自己进行记录。
但是,如果您可能尝试将其扩展为更通用的解决方案,那么如果可以的话,请为现有的解决方案付费,因为从长远来看,它会更便宜。
潜在解决方案:
分布式进程的困难在于如何匹配未排序文件中的键。
在一个进程中运行这一切的问题是内存。
对于商业rec工具,我采用的方法是将csv保存到h2中的表中,并使用sql进行差异化。
h2在这方面比oracle快得多。
如果您的数据结构良好,您可以利用h2直接从csv加载的功能,如果您将结果保存在一个表中,您也可以将输出写入csv,或者您可以使用其他框架编写更结构化的输出,或者将结果流式传输到网页。
如果您的格式是xls(x)而不是csv,您应该对各种库进行性能测试以读取文件,因为在处理该大小时存在巨大差异。
2eafrhcq3#
我也一直在做同样的工作-
您可以使用pyspark/scala将csv文件加载到临时表中,并在创建的临时表上进行查询。