如何在shell脚本中读取所需文件

rggaifut  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(323)

抱歉,问题不清楚,我是hadoop研究的新手。我又修改了问题。
我用python编写了两个hadoopmapreduce程序:map.py和red.py。然后在hdfs上编写run.sh以继续使用hadoop流的mapreduce。
我需要读半年的hdfs数据,文件named:20170101-20170630.
hdfs中的文件路径:

/user/name/20161231
/user/name/20170101
/user/name/20170102
.....
/user/name/20170630
/user/name/20170701

如何编写run.sh来读取所需文件?
run.sh中的脚本部分:


# ! /bin/bash

HPHOME=/opt/cloudera/parcels/CDH
JAR_PACKAGE=/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-streaming.jar

# it dosen't work, how to read selected file:20170101-20170630

IN_PATH=/user/name/20170[101-630] 
OUT_PATH=/user/out
MAP_FILE=/home/map.py
RED_FILE=/home/red.py

非常感谢你!

s5a0g9ez

s5a0g9ez1#

不确定,你是否在尝试阅读 local 文件或 hdfs 文件夹。但我会提出两种解决方案。
从本地unix系统读取6个月的文件。

local_files=`ls /user/name/2017[0][1-6][0-9][0-9]`
for IN_PATH in `echo $local_files`;
do 
   echo "LOCAL FILE IS: $IN_PATH"
done

从hdfs系统读取6个月的文件。

hdfs_files=`hdfs dfs -ls /user/hduser/|grep /user/hduser/2016[0][1]|awk '{print $8}'`
for IN_PATH in `echo $hdfs_files`;
do 
  echo "HDFS FILE IS: $IN_PATH"
done

相关问题