在hdfs中将小文件合并成单个文件

fd3cxomn  于 2021-05-31  发布在  Hadoop
关注(0)|答案(3)|浏览(451)

在HDF集群中,我每天接收多个文件,这些文件有3种类型:
1) 产品信息时间戳
2) 用户信息\u时间戳
3) 用户活动时间戳
接收的文件数量可以是任意数量,但它们只属于这3个类别中的一个。
我想把属于一个类别的所有文件(在检查它们是否小于100mb之后)合并到一个文件中。例如:3个名为product\u info的文件应该合并到一个名为product\u info的文件中。
我如何做到这一点?

vh0rcniy

vh0rcniy1#

@scouto建议的另一组类似命令
hdfs dfs -cat /hdfs_path/product_info_* > /local_path/product_info_combined.txt hdfs dfs -put /local_path/product_info_combined.txt /hdfs_path/

y1aodyip

y1aodyip2#

您可以使用getmerge来实现这一点,但是结果将存储在本地节点(边缘节点)中,因此您需要确保在那里有足够的空间。

hadoop fs -getmerge /hdfs_path/product_info_* /local_path/product_inf

你可以用put把它们移回hdfs

hadoop fs -put  /local_path/product_inf /hdfs_path
nkcskrwz

nkcskrwz3#

您可以使用hadoop存档(.har文件)或序列文件。它的使用非常简单-只是谷歌“hadoop存档”或“序列文件”。

相关问题