catを使ってファイルを分割してhdfsにアップロードしますか?

catを使ってファイルを分割してhdfsにアップロードしますか?

ローカル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

おすすめ記事