Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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
一起使用Hadoop分区器和Comparator类_Hadoop_Shuffle_Hadoop Streaming_Hadoop Partitioning - Fatal编程技术网

一起使用Hadoop分区器和Comparator类

一起使用Hadoop分区器和Comparator类,hadoop,shuffle,hadoop-streaming,hadoop-partitioning,Hadoop,Shuffle,Hadoop Streaming,Hadoop Partitioning,我有一个文件,它有两列id和timestamp。我正在计算每个值的会话数-由30分钟以上的不活动状态决定。但是,我在使用流式命令时遇到了问题。下面是几行的示例 id,time 1,2015-02-05 01:01:01 1,2015-02-05 01:02:01 3,2015-02-05 02:01:01 3,2015-02-05 02:01:02 我知道我的映射器和减速器工作正常b/c当我只使用一个减速器时,我得到了正确的结果。我的问题是,当我需要使用多个reducer时,我尝试使用Part

我有一个文件,它有两列id和timestamp。我正在计算每个值的会话数-由30分钟以上的不活动状态决定。但是,我在使用流式命令时遇到了问题。下面是几行的示例

id,time
1,2015-02-05 01:01:01
1,2015-02-05 01:02:01
3,2015-02-05 02:01:01
3,2015-02-05 02:01:02
我知道我的映射器和减速器工作正常b/c当我只使用一个减速器时,我得到了正确的结果。我的问题是,当我需要使用多个reducer时,我尝试使用Partitioner将map输出的第一个值发送到一个reducer,并根据map输出中的第二个值对其进行排序。关于如何做到这一点有什么建议吗

这就是我正在尝试的

hadoop jar /opt/cloudera/parcels/CDH-5.1.2-1.cdh5.1.2.p470.103/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.3.0-mr1-cdh5.1.2.jar \
-Dmapred.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator \
-D stream.map.output.field.separator=, \
-D stream.num.map.output.key.fields=2 \
-D mapred.text.key.partitioner.options=-k1,1 \
-Dmapred.text.key.comparator.options=-k2,2 \
-input /in/ \
-output /out/  \
-mapper mapper1.py \
-file ${DIR}mapper.py \
-reducer reducerA.py \
-file ${DIR}reducer.py

将“-Dmapred.text.key.comparator.options=-k2,2”更改为“-Dmapred.text.key.comparator.options=-k1,2”,这样减速机接收的记录首先按id排序,然后按时间排序。此外,您的reducer还需要比较记录的连续键(id),并且只计算id相同的记录的会话数

是的,你可以。但你的具体问题是什么?值未正确排序或分区到减缩器?