gpt4 book ai didi

hadoop - 将 50 个大文件中的列/字段合并到一个文件中

转载 作者:可可西里 更新时间:2023-11-01 16:52:23 26 4
gpt4 key购买 nike

我想知道组合所有字段/列的有效方法多个文件合并为一个文件。对于每一个

文件1:

1,fname1,one
2,fname2,two

文件2:

1,lname1,lone
2,lname2,ltwo

预期输出

1,fname1, one,lname1,lone
2,fname2,two,lname2,ltwo

我有大约 70 个这样的文件,每个文件有超过 1 亿条记录和 6 列。

目前我正在尝试使用 hive 连接来做到这一点。它似乎永远在运行——将近 24 小时并且仍在运行。我需要更好的解决方案。

最佳答案

以“朴素”的方式连接 70 个文件意味着 Hive 必须按顺序执行 69 个连接步骤,左侧数据集越来越大。如果您使用嵌套子查询显式分解任务——即将 A 与 B、C 与 D、然后 AB 与 CD 等连接起来——那么灾难性会小一些,但仍然会占用大量资源。

在任何情况下,Hive 都不会利用所有文件都已排序的事实(请参阅有关 Sort-Merge 连接的文档和有关分桶的明确要求)

实际上,您的问题与大型机上的 COBOL 一样古老。而且我不确定它是否可以通过分布式方式有效地解决(需要文件以一致的方式开始分区)。所以请考虑非 Hadoop 解决方案:

  • 如果您想要性能和工业强度的解决方案 - 并且有很多现金可以花——然后购买 SyncSort 的许可证或类似工具
  • 如果您只想立即完成工作,请下载所有文件到 Linux 机器并尝试使用旧的 sort -m 命令(不确定不过,对 RAM 和 Swap 的影响)

关于hadoop - 将 50 个大文件中的列/字段合并到一个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31894059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com