Hadoop 要使用的类型:自定义数据类型或TwoDArrayWritable
为了将2个矩阵作为键值对发出:Hadoop 要使用的类型:自定义数据类型或TwoDArrayWritable,hadoop,mapreduce,Hadoop,Mapreduce,为了将2个矩阵作为键值对发出: Key - Matrix A 值-矩阵B 我应该创建一个自定义数据类型,还是可以直接使用TwoDArrayWritable?那么自定义类中的compareTo()方法呢?您肯定需要为您的键编写自定义类,因为TwoDArrayWritable没有实现WritableComparable(即使您只是扩展TwoDArrayWritable类来添加接口和compareTo方法) 至于是否应该在自定义类上使用TwoDArrayWritable,这取决于几个因素(在我看来
Key - Matrix A
值-矩阵B
我应该创建一个
自定义
数据类型,还是可以直接使用TwoDArrayWritable
?那么自定义类中的compareTo()方法呢?您肯定需要为您的键编写自定义类,因为TwoDArrayWritable
没有实现WritableComparable
(即使您只是扩展TwoDArrayWritable
类来添加接口和compareTo
方法)
至于是否应该在自定义类上使用TwoDArrayWritable,这取决于几个因素(在我看来):
- 阵列的大小/尺寸是否固定?如果是这样,我会说使用一个自定义类,这样可以节省性能,而不是为每个对象反序列化调用重新创建数组
- 数组是否包含基元类型(int、double、float等)——如果是这样,我会再次说使用自定义类,这样在执行下游矩阵操作时,就不必担心从它们的包装器可写(IntWritable、DoubleWritable等)中包装/解包基元值了
TwoDArrayWritable
没有实现WritableComparable
(即使您只是扩展TwoDArrayWritable
类来添加接口和compareTo
方法)
至于是否应该在自定义类上使用TwoDArrayWritable,这取决于几个因素(在我看来):
- 阵列的大小/尺寸是否固定?如果是这样,我会说使用一个自定义类,这样可以节省性能,而不是为每个对象反序列化调用重新创建数组
- 数组是否包含基元类型(int、double、float等)——如果是这样,我会再次说使用自定义类,这样在执行下游矩阵操作时,就不必担心从它们的包装器可写(IntWritable、DoubleWritable等)中包装/解包基元值了