2017-12-18 272 views
-1

我正在一个项目中接收大约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读取这些数据。

+0

为什么你需要使用Java下载本地处理的数据?你能用Hive这样的工具直接处理数据吗? –

+0

您是否增加了梁执行器或钻头堆大小? Hive,Spark或Pig都是大多数hadoop发行版中的典型工具 –

+0

请包含您的Beam代码并说明您使用的是哪个版本的Beam SDK和哪个亚军。 – jkff

回答

-1
+0

Drill还使用内存模型处理hadoop数据 –

+0

@ cricket_007 OP在我的回答后添加了一些附加信息(包括Drill和Beam信息)。所以我不知道他使用什么工具。那么为什么低估我??? – Uata

+0

我的不好。 “我建议Spark”+ [某些链接不完全是答案](https://meta.stackexchange。COM /问题/ 8231 /是 - 答案 - 即,刚刚包含链接别处 - 真的好 - 答案)。它也没有建议使用MapReduce。那个“Java进程”可能已经是Spark了。 –