Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在shell脚本中读取所需文件_Shell_Hadoop_Mapreduce_Streaming - Fatal编程技术网

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

如何在shell脚本中读取所需文件,shell,hadoop,mapreduce,streaming,Shell,Hadoop,Mapreduce,Streaming,抱歉,问题不清楚,我是Hadoop研究的新手。 我再次编辑了这个问题 我用Python编写了两个Hadoop MapReduce程序:map.py和red.py。 然后在HDFS上编写run.sh以继续使用Hadoop流的MapReduce 我需要读取HDFS上半年的数据,文件名为:20170101-20170630 HDFS中的文件路径: /user/name/20161231 /user/name/20170101 /user/name/20170102 ..... /user/name/2

抱歉,问题不清楚,我是Hadoop研究的新手。 我再次编辑了这个问题

我用Python编写了两个Hadoop MapReduce程序:map.py和red.py。 然后在HDFS上编写run.sh以继续使用Hadoop流的MapReduce

我需要读取HDFS上半年的数据,文件名为: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

多谢各位

不确定您是尝试读取本地文件还是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

删除了python标记,这是一个bash问题,而不是python问题。首先将您想要的文件移动或复制到单个目录中如何?它可以工作。很抱歉,问题不清楚,我编辑了它。非常感谢