我正在开发一个项目,我收到大约10个文件,每个文件包含200GB的大小。我的项目要求是从每个文件中提取数据并与其他文件连接并提取数据。
E.G就像我有文件1.txt,我有帐户ID,我有文件2.txt,我有帐户ID和帐户名。在第一个文件的帐户ID的基础上,我需要从第二个文件中提取数据。
这样我需要对10个文件中的每个文件执行操作并创建最终输出文件。
我目前正在Java中这样做,这是真正的时间过程。约需要4到5个小时。
我可以通过任何改变来提高我的表现吗?是否有任何技术或任何工具或框架可以与java集成并提高我的性能?
我使用了以下方法。
1)Apache Drill-我正在执行连接查询 结果:由于文件大小过多,Drill正在抛出Drillbit异常。
2)Apache Beam-我正在使用并行处理执行文件连接。 结果:它按分组给出了Out of Memory异常。
我正在从hadoop读取这些数据。
答案 0 :(得分:-1)
我建议使用Hadoop和Spark,因为Spark使用的内存模型比Map Reduce更快。 也许这两个链接可以帮助你: