在HDF集群中,我每天接收多个文件,这些文件有3种类型:1) 产品信息时间戳2) 用户信息\u时间戳3) 用户活动时间戳接收的文件数量可以是任意数量,但它们只属于这3个类别中的一个。我想把属于一个类别的所有文件(在检查它们是否小于100mb之后)合并到一个文件中。例如:3个名为product\u info的文件应该合并到一个名为product\u info的文件中。我如何做到这一点?
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/
hdfs dfs -put /local_path/product_info_combined.txt /hdfs_path/
y1aodyip2#
您可以使用getmerge来实现这一点,但是结果将存储在本地节点(边缘节点)中,因此您需要确保在那里有足够的空间。
hadoop fs -getmerge /hdfs_path/product_info_* /local_path/product_inf
你可以用put把它们移回hdfs
hadoop fs -put /local_path/product_inf /hdfs_path
nkcskrwz3#
您可以使用hadoop存档(.har文件)或序列文件。它的使用非常简单-只是谷歌“hadoop存档”或“序列文件”。
3条答案
按热度按时间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/
y1aodyip2#
您可以使用getmerge来实现这一点,但是结果将存储在本地节点(边缘节点)中,因此您需要确保在那里有足够的空间。
你可以用put把它们移回hdfs
nkcskrwz3#
您可以使用hadoop存档(.har文件)或序列文件。它的使用非常简单-只是谷歌“hadoop存档”或“序列文件”。