我正在一个项目中接收大约10个文件,每个文件包含大小为200GB的文件。我的项目要求是从每个文件中提取数据,并与其他文件进行连接并提取数据。Java中的大数据处理
E.G像我有文件1.txt我有帐户ID和我有文件2.txt,我有帐户ID和帐户名称。根据第一个文件的帐户ID我需要从第二个文件提取数据。
这样我需要对10个文件中的每一个执行操作并创建最终的输出文件。
我目前正在Java中这是真正花时间的过程。大约需要4到5个小时。
我可以通过改变来提高我的表现吗?是否有任何技术或任何工具或框架,我可以与Java集成并提高我的表现?
我已经使用了以下方法。
1)Apache Drill-我正在执行连接查询 结果:由于文件大小过大,Drill会抛出Drillbit异常。
2)Apache Beam-我正在使用并行处理来加入文件。 结果:它在组合功能下给我Out Out Memory异常。
我正在从hadoop读取这些数据。
为什么你需要使用Java下载本地处理的数据?你能用Hive这样的工具直接处理数据吗? –
您是否增加了梁执行器或钻头堆大小? Hive,Spark或Pig都是大多数hadoop发行版中的典型工具 –
请包含您的Beam代码并说明您使用的是哪个版本的Beam SDK和哪个亚军。 – jkff