在Hadoop中为中间键使用set/list数据类型

在Hadoop中为中间键使用set/list数据类型,hadoop,Hadoop,在Apache Hadoop map reduce程序中,使用集合/列表作为映射器输出中的键有哪些选项 我最初的想法是使用ArrayWritable作为键类型,但这是不允许的,因为类没有实现WritableComparable。我是否需要定义一个自定义类,或者Hadoop库中是否有其他类似集合的类可以用作键?我认为ArrayWritable实现了Writable,这是Writable的高级接口 您是否将ArrayWritable子类化?根据文档,您需要对其进行子类化,以便设置数组存储的对象类型。

在Apache Hadoop map reduce程序中,使用集合/列表作为映射器输出中的键有哪些选项


我最初的想法是使用
ArrayWritable
作为键类型,但这是不允许的,因为类没有实现
WritableComparable
。我是否需要定义一个自定义类,或者Hadoop库中是否有其他类似集合的类可以用作键?

我认为ArrayWritable实现了Writable,这是Writable的高级接口

您是否将ArrayWritable子类化?根据文档,您需要对其进行子类化,以便设置数组存储的对象类型。例如:

public class TextArrayWritable extends ArrayWritable {

    public TextArrayWritable() {
        super(Text.class);
    }
}

签出。

我认为ArrayWritable实现了Writable,这是Writable的一个高级接口

您是否将ArrayWritable子类化?根据文档,您需要对其进行子类化,以便设置数组存储的对象类型。例如:

public class TextArrayWritable extends ArrayWritable {

    public TextArrayWritable() {
        super(Text.class);
    }
}

签出。

数组可写
实现了
可写
,但没有
可写可比
,显然后者是用于键的类所必需的。我可以子类化
ArrayWritable
并添加对
WritableCompariable
接口的支持,但这是必要的吗?啊,抱歉,我看得更近了一点。由于hadoop需要能够对键进行排序,因此该键需要WritableComparable。因此,是的,您可以实现WritableComparable接口,它只需要重写compareTo方法。希望这有帮助。
ArrayWritable
实现了
可写
,但不是
可写可比
,显然后者是用于键的类所必需的。我可以子类化
ArrayWritable
并添加对
WritableCompariable
接口的支持,但这是必要的吗?啊,抱歉,我看得更近了一点。由于hadoop需要能够对键进行排序,因此该键需要WritableComparable。因此,是的,您可以实现WritableComparable接口,它只需要重写compareTo方法。希望这有帮助。您能给出在中使用列表/设置为键的用例吗mapper@PradyumnaMohapatra我的问题已经问了四年多了,但IIRC我的中间键是一组一起购买的产品,中间值是这个子集的订单ID。然后,
reduce
方法将统计每个不同产品集的出现次数。您能给出在中使用list/set作为键的用例吗mapper@PradyumnaMohapatra我的问题已经问了四年多了,但IIRC我的中间密钥是一套一起购买的产品,中间值是具有此子集的订单ID。然后,
reduce
方法将统计每个不同产品集的出现次数。