我有200个1GB gzip压缩文件
- A.1.gz
- A.2.gz
...
- A.200.gz
因为我使用的是不支持“lzo”格式的hadoop cluter,我正在考虑以下两个选项:
- 解压缩每个文件并将其拆分为64Mb纯文本文件并将其复制到hdfs
- 将上面的纯文本文件gzip并将它们放到hdfs
醇>
是否有一个shell命令可以在一行中完成这项工作?
- zcat *.gz | split -l 200000 - B_art
- hadoop -fs -put B_part* /data/folder
如果本地目录不够大,我必须逐个处理这些文件。 处理此问题的最佳方法是什么?
我正在使用此脚本:
SRC="./test"
TGT="Target/test"
mkdir $SRC/temp
for file in $SRC/*.gz
do
fname=`basename $file`
echo $fname
fname2=${fname/.txt.gz/_part_}
echo $fname2
zcat $file | split -l 200000 $SRC/temp/$fname2
hadoop fs -put $SRC/temp/$fname2* $TGT/
rm $SRC/Temp/$fname2*
done