Java中的大数据处理

Java中的大数据处理,java,hadoop,bigdata,apache-beam,Java,Hadoop,Bigdata,Apache Beam,我正在做一个项目,在那里我收到大约10个文件,每个文件的大小为200GB。我的项目要求是从每个文件中提取数据,并与其他文件连接并提取数据 例如,我有文件1.txt,其中我有帐户Id,我有文件2.txt,其中我有帐户Id和帐户名称。根据第一个文件中的帐户Id,我需要从第二个文件中提取数据 这样,我需要对10个文件中的每个文件执行操作,并创建最终的输出文件 我目前正在用Java做这件事,这是一个非常耗时的过程。大约需要4到5个小时 我可以通过任何改变来提高我的绩效吗?是否有任何技术、工具或框架可以与

我正在做一个项目,在那里我收到大约10个文件,每个文件的大小为200GB。我的项目要求是从每个文件中提取数据,并与其他文件连接并提取数据

例如,我有文件1.txt,其中我有帐户Id,我有文件2.txt,其中我有帐户Id和帐户名称。根据第一个文件中的帐户Id,我需要从第二个文件中提取数据

这样,我需要对10个文件中的每个文件执行操作,并创建最终的输出文件

我目前正在用Java做这件事,这是一个非常耗时的过程。大约需要4到5个小时

我可以通过任何改变来提高我的绩效吗?是否有任何技术、工具或框架可以与java集成并提高性能

我使用了以下方法

1) Apache Drill-我正在执行连接查询 结果:由于文件大小过大,Drill正在引发Drillbit向下异常

2) ApacheBeam—我正在使用并行处理对文件执行连接。 结果:按功能分组时出现内存不足异常


我正在从hadoop读取这些数据。

我建议使用hadoop和Spark,因为Spark使用的内存模型比Map Reduce更快。 也许这两个链接可以帮助您:


为什么需要下载数据,以便使用Java进行本地处理?您是否可以直接使用Hive之类的工具来处理数据?您是否增加了波束执行器或钻头堆的大小?Hive、Spark或Pig都是大多数hadoop发行版中典型的优秀工具。请包括您的Beam代码,并说明您使用的是哪个版本的Beam SDK和哪个runner。@cricket_007是的,我将钻头堆增加到7GB,并尝试过,但仍然没有成功。@(我将beam executor计数设为2000,这是最大值,但它仍然无法工作。第一件事::我可以通过beam或Drill处理这些大量数据吗..这些工具是否受支持。?Drill还使用内存模型来处理hadoopdata@cricket_007OP增加了一些附加信息(包括钻孔和波束信息)在我的回答之后。所以我不知道他使用了什么工具。那么,为什么对我投反对票呢?我的错。“我建议使用Spark”+。它也不建议使用MapReduce。那个“Java进程”可能已经是Spark了。@cricket_007好的。我理解你的意思。但我认为,我不值得投反对票。我只是不想从某些链接复制信息。原始帖子完全不同。无论如何,这取决于你。如果你更新你的答案,使其包含一些Spark代码,根据que中给出的条件连接两个数据帧斯蒂恩,我会回复的。