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

관련 정보