如何对hadoop流中带数字的文件名进行二次排序?

时间:2015-11-15 17:30:56

标签: sorting hadoop hadoop-streaming hadoop-partitioning secondary-sort

我试图对文件名进行排序,例如

    cat1.pdf, cat2.pdf, ... cat10.pdf ... 

我现在使用以下参数进行排序:

    -D mapreduce.job.output.key.comparator.class=org.apache.hadoop.mapreduce.lib.partition.KeyFieldBasedComparator 
    -D stream.num.map.output.key.fields=2 
    -D mapreduce.partition.keypartitioner.options="-k1,1" 
    -D mapreduce.partition.keycomparator.options="-k1,1 -k2,2 -V" 
    -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner

键值对由选项卡分隔,文件名为值,字符串为键。问题是我的排序现在二次排序文件名,以便我得到

    cat1.pdf, cat10.pdf, cat2.pdf, cat3.pdf, cat30.pdf ... 

我怎样才能得到这样的文件按如下方式排序:

    cat1.pdf, cat2.pdf, cat3.pdf ... cat10.pdf,cat11.pdf...

我正在使用hadoop流媒体2.7.1

0 个答案:

没有答案