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

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

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

    将服务器上的文件上传的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脚本了

发布了91 篇原创文章 · 获赞 125 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/Jarry_cm/article/details/102730076