我试图实现这种情况,我可以分割本地 linux 上的 gz 文件并将其作为解压缩或压缩文件的一部分上传到 hdfs,而无需将分割输出写入磁盘。尝试以下命令后我遇到问题。
下面的命令写入本地磁盘,然后我可以上传到我不想要的 hdfs :-
zcat ./file.txt.gz | tail -n +2 | split -l 20 - file.part
hdfs dfs -copyFromLocal ./*file.part* /folder/in/hdfs/
我想要这样的东西可以实现吗?:-
zcat ./file.txt.gz | tail -n +2 | split -l 20 | gzip -d | hdfs dfs -put - /folder/in/hdfs/file.part
答案1
您可以避免拆分并自行进行拆分:
number_of_files=5 # for you to determine
zcat ./file.txt.gz | for((i=0;i<5;i++)); do
head -n 20 | hdfs dfs -put - /folder/in/hdfs/file.part_$i
done