我无法理解Hadoop中NullWritable的概念。它用于什么以及为什么RCFile
格式的outputKeyClass为NullWritable.class
而outputValueClass为BytesRefArrayWritable.class
?
答案 0 :(得分:2)
这是因为RCFiles没有密钥。从纯文本文件(如CSV)读取时,该键通常是文件中的字节偏移量。由于RCFiles具有柱状存储格式,因此在不同列集中对行进行分段时,实际上并不存在可用于标识行的键。 NullWritable
基本上意味着ignore this value
。
答案 1 :(得分:1)
" MapReduce的Map和Reduce函数都是针对(key,value)对中构造的数据定义的 " (wikipedia)。
这意味着您的数据必须以(键,值)对结构化。但有时不需要使用密钥,也不能将其设置为Null
,因为密钥必须实现WritableComparable
。这就是Hadoop创建NullWritable
课程的原因。