我正在尝试将header.txt作为第一行插入data.txt,而不使用getmerge。getmerge复制到本地并插入到第三个文件中。但我只想要hdfs标题.txt头1,头2,头3数据.txt100,约翰,28岁101,吉尔,25102岁,詹姆斯,29岁我希望以data.txt文件输出,如下所示:数据.txt头1,头2,头3100,约翰,28岁101,吉尔,25102岁,詹姆斯,29岁请建议我是否可以只在hdfs中实现?
e4eetjau1#
谢谢你的回复。我有其他的方法,比如:hadoop fs cat hdfs_path/header.txt hdfs_path/data.txt | hadoop fs-put-hdfs_path/merged.txt这是一个缺点,因为cat命令会读取影响性能的完整数据。
avkwfej42#
hdfs支持 concat (concatenate的缩写)将两个文件合并成一个文件而不进行任何数据传输的操作。它能完全满足你的需求。根据文件系统shell指南文档判断,命令行当前不支持它,因此需要用java实现:
concat
FileSystem fs = ... Path data = new Path("Data.txt"); Path header = new Path("Header.txt"); Path dataWithHeader = new Path("DataWithHeader.txt"); fs.concat(dataWithHeader, header, data);
在这之后, Data.txt 以及 Header.txt 两者都不复存在,取而代之的是 DataWithHeader.txt .
Data.txt
Header.txt
DataWithHeader.txt
2条答案
按热度按时间e4eetjau1#
谢谢你的回复。
我有其他的方法,比如:
hadoop fs cat hdfs_path/header.txt hdfs_path/data.txt | hadoop fs-put-hdfs_path/merged.txt
这是一个缺点,因为cat命令会读取影响性能的完整数据。
avkwfej42#
hdfs支持
concat
(concatenate的缩写)将两个文件合并成一个文件而不进行任何数据传输的操作。它能完全满足你的需求。根据文件系统shell指南文档判断,命令行当前不支持它,因此需要用java实现:在这之后,
Data.txt
以及Header.txt
两者都不复存在,取而代之的是DataWithHeader.txt
.