我编写了一个Map器函数,它解析xml并将结果输出为以“\t”分隔的列,如下所示
Name Age
ABC 23
XYZ 24
ERT 25
使用如下所述的hadoop流代码,我尝试根据密钥对数据进行分区。我想为不同的键创建不同的输出文件夹,即
我不想让part-00000、part-00001和part-00003作为输出文件夹“out\u parse\u part16”中的输出文件,而是希望文件夹像这样创建
/第16部分/,
/第16部分/xyz,
/外部分析第16部分/ert
我希望数据被划分到不同的文件夹定义的键。有没有办法在我的代码中基于键创建输出文件夹?
/opt/cloudera/parcels/CDH-5.5.2-1.cdh5.5.2.p0.4/bin/hadoop jar /opt/cloudera/parcels/CDH-5.5.2-1.cdh5.5.2.p0.4/jars/hadoop-streaming-2.6.0-cdh5.5.2.jar \
-Dstream.recordreader.begin="<START_REC>" \
-Dstream.recordreader.end="</START_REC>" \
-D mapred.job.name="parse_with_partition" \
-D stream.num.map.output.key.fields=1 \
-D map.output.key.field.separator=\t \
-D mapred.text.key.partitioner.options="-k1nr" \
-inputreader "org.apache.hadoop.streaming.StreamXmlRecordReader,begin =<START_REC>,end=</START_REC>" \
-file csv_parser_part.py \
-mapper csv_parser_part.py \
-file csv_part_reducer.py \
-reducer /csv_part_reducer.py \
-input TEST_XML2.xml \
-output out_parse_part16 \
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \
-verbose
1条答案
按热度按时间l7wslrjt1#
我想你需要一个这样的jar。