【shell】服务器本地上传,下载文件到hdfs里面,并用shell脚本调用python

     如果将文件放到服务器中,那么当遇到服务器下线的时候,之前所有做过的JOB都会面临修改的问题,如何避免这种情况呢?

小白最近遇到这样的问题,以下是解决方案。

目录

1.首先,在HDFS上创建一个自己使用的大目录

2.将chen下的所有文件都上传到HDFS上面创建的目录下

3.由于每次get一个目录,如果test1下有很多文件或者包含大文件的话,就不适合每次get,因此,将要用的几个小文件copy到另外一个文件夹下,以便每次get到当前路径

4.当2或者3命令执行后,可以先看下HDFS下是否上传成功或者copy成功

5.前面步骤准备就绪后,就可以使用shell脚本调用python了


    将服务器上的文件上传的HDFS上,在shell脚本调用时,再get到当前路径,就可以了。下面就讲一下,如何操作:

1.首先,在HDFS上创建一个自己使用的大目录

#命令:
hdfs dfs -mkdir hdfs://.../.../test1

2.将chen下的所有文件都上传到HDFS上面创建的目录下

hdfs dfs -put /.../.../chen/* hdfs://.../.../test1

3.由于每次get一个目录,如果test1下有很多文件或者包含大文件的话,就不适合每次get,因此,将要用的几个小文件copy到另外一个文件夹下,以便每次get到当前路径

hadoop fs -cp hdfs://.../.../test/csv2xls.py hdfs://.../.../test2

4.当2或者3命令执行后,可以先看下HDFS下是否上传成功或者copy成功

hdfs dfs -ls hdfs://.../.../test1

5.前面步骤准备就绪后,就可以使用shell脚本调用python了

#首先,从hdfs上将要用的文件夹get到当前路径
hdfs dfs -get hdfs://.../.../test ./

#获取当前路径
file_path=`cd $(dirname $0); pwd -P`
#下面是要使用的文件名
python_name="csv2xls.py"
file_name_t="ordernum_1.csv"
file_name_y="ordernum_2.xls"

hive -e "
select 
       sum(a) as a,
       count(b) as b,
       sum(c) as c
  from table
;" > $file_path/$file_name_t
 
 

python2.7 $file_path/$python_name $file_path/$file_name_t $file_path/$file_name_y

以上,就是完整的使用HDFS路径下的文件,调用python脚本了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值