Java中的大数据处理
Posted
技术标签:
【中文标题】Java中的大数据处理【英文标题】:Big Data Processing In Java 【发布时间】:2017-12-18 12:09:59 【问题描述】:我正在做一个项目,我收到大约 10 个文件,每个文件大小为 200GB。我的项目要求是从每个文件中提取数据并与其他文件进行连接并提取数据。
例如,我有文件 1.txt,其中有帐户 ID,我有文件 2.txt,其中有帐户 ID 和帐户名称。根据第一个文件中的帐户 ID,我需要从第二个文件中提取数据。
这样我需要对 10 个文件中的每一个执行操作并创建最终输出文件。
我目前正在 Java 中执行此操作,这确实需要时间。大约需要 4 到 5 个小时。
我可以通过任何改变来提高我的表现吗?是否有任何技术或工具或框架可以与 java 集成并提高我的性能?
我使用了以下方法。
1) Apache Drill- 我正在执行连接查询 结果:Drill 抛出 Drillbit 异常,因为文件太大。
2) Apache Beam - 我正在使用并行处理对文件进行连接。 结果:它在按功能分组时给了我内存不足异常。
我正在从 hadoop 中读取这些数据。
【问题讨论】:
为什么要用Java下载数据进行本地处理?你能用 Hive 之类的工具直接处理数据吗? 您是否增加了梁执行器或钻头堆大小? Hive、Spark 或 Pig 都是大多数 hadoop 发行版中典型的优秀工具 请附上您的 Beam 代码并说明您使用的是哪个版本的 Beam SDK 和哪个运行器。 @cricket_007 是的,我将钻头堆增加到 7GB 并尝试了但仍然没有运气。 :( 我将梁执行器计数为 2000,这是最大值,但它仍然无法工作。 第一件事 :: 我能不能用 Beam 或 Drill 处理这么多的数据.. 这些工具是否受支持。 ? 【参考方案1】:我建议使用 Hadoop 和 Spark,因为 Spark 使用比 Map Reduce 更快的内存模型。 也许这两个链接会对您有所帮助:
https://content.pivotal.io/blog/3-key-capabilities-necessary-for-text-analytics-natural-language-processing-in-the-era-of-big-data
https://community.hortonworks.com/articles/84781/spark-text-analytics-uncovering-data-driven-topics.html
【讨论】:
Drill 也使用内存模型来处理 hadoop 数据 @cricket_007 OP 在我的回答之后添加了一些附加信息(包括钻孔和梁信息)。所以我不知道他用的是什么工具。那为什么要对我投反对票??? 我的错。 “我建议 Spark”+some links is not entirely an answer。它也没有表明正在使用 MapReduce。那个“Java 进程”可能已经是 Spark。 @cricket_007 好的。我明白你的意思。但我认为,我不应该投反对票。我只是不想从某些链接中复制信息。原始帖子完全不同。无论如何,这取决于你。 如果您更新答案以包含一些根据问题中给出的条件连接两个数据帧的 Spark 代码,我会回复。以上是关于Java中的大数据处理的主要内容,如果未能解决你的问题,请参考以下文章
打怪升级之小白的大数据之旅(六十)<Hive旅程中的始发站>