Sqoop Merge 工具在单个文件中生成输出
Posted
技术标签:
【中文标题】Sqoop Merge 工具在单个文件中生成输出【英文标题】:Sqoop Merge tool to generate output in single file 【发布时间】:2018-06-26 06:15:25 【问题描述】:目前我正在执行下面的命令
sqoop 合并 --new-data /home/part1/part-m-00000 --onto /home/part2/part-m-00000 --target-dir /home/merged --jar-file /home/hadoop/myjar.jar --class-name myjar --merge-key id
一切正常,除了合并在多个部分文件中生成输出,因为这是 hadoop 中的 mapreduce 任务,它使用多个减速器。
零件文件是拼花文件,我想创建单个文件,因为我的下一个过程将输入相同的文件,下一个过程是在同一个提取的文件上运行 Apache spark 作业。
如何强制将 sqoop 的输出合并到单个文件中?对此有何建议?
谢谢,
-杰克逊
【问题讨论】:
【参考方案1】:当我需要这样做时,我做了:
-
创建一个新的目标文件
Sqoop 命令运行后,转到所有零件文件所在的目录
已创建
执行 cat * >> target_file
不确定这是否适合你,因为我没有足够的细节来处理你的例子。
这里假设你正在从 shell 脚本执行 sqoop 命令。
【讨论】:
感谢您的回复@Sam S,我有 [Users] 表,我需要将 hdfs 中的数据逐步加载到单个 parquet 文件中,该文件将输入另一个进程,即 spark程序。因此,您建议的解决方案适用于 csv 文件格式。是的,我正在从 shell 执行 sqoop,并且 sqoop 版本是 1.4.6 我建议您在问题中添加该信息,以便其他人提供预期的答案。是的,我正在使用分隔文件。以上是关于Sqoop Merge 工具在单个文件中生成输出的主要内容,如果未能解决你的问题,请参考以下文章
Javascript - 在单个数组中生成所有元素组合(成对)
如何比较多列,并在单个新列中生成值,在 Pandas 中使用 Apply 函数