在将远程文件放入hadoop时添加压缩和解压缩

时间:2017-04-12 18:30:19

标签: bash shell hadoop compression

我有一些本地数据文件(csv),我想将它们上传到AWS中的Hadoop hdfs。我想在没有先将文件上传到远程服务器,然后将文件复制到HDFS的情况下完成此操作。所以我按照this post在CLI中创建了一个单行内容。

现在为了加快进程并节省带宽,我想我可以压缩每个文件(本地),上传,解压缩(在远程服务器上),然后放入HDFS。

如何在我的pipline中添加压缩和解压缩?

以下是我目前的脚本:

java.util.Date

更新

经过一些实验,我想出了以下解决方案:

#! /bin/bash

DATA_FOLDER="~/data"

for fpath in $DATA_FOLDER/*; do
    fname=`basename "$fpath"`
    #echo $fname
    cat $DATA_FOLDER/$fname | ssh namenode ". ~/.bash_profile; hdfs dfs -put - /data/ShenXianNongShangHang/$fname"
    echo "Copied \"$fpath\" to HDFS."
done

1 个答案:

答案 0 :(得分:0)

没有足够的代表发表评论。也许尝试这样的事情?

cat $ DATA_FOLDER / $ fname | gzip $ fname | ssh namenode“.~ / .bash_profile; gzip -d $ fname; hdfs dfs -put - / data / ShenXianNongShangHang / $ fname”

Compress files while reading data from STDIN