有一个配置单元内部表,存储为序列文件,第一列类型为字符串,字段分隔符为'\ 1',我想直接使用Mapreduce处理它,并发现输入键是BytesWritable。我的问题是配置单元如何将数据存储在sequencefile中?我得到bytesWritable键的原因是第一列类型是字符串吗?我没有将 map 的键分隔符配置为'\ 1',所以我对第二个问题感到困惑
最佳答案
Hive不会将第一列视为SequenceFile的键。相反,密钥将被完全忽略。 [1] [2]。因此,当您编写映射器以对Hive SequenceFile进行操作时,还应该忽略Key。您所有的列都将是“值”的一部分。
万一您的Value也是BytesWritable
并且您希望它是Text
,请尝试SequenceFileAsTextInputFormt
(docs)。 this similar question问题的答案可能有助于您进行设置。您应该能够使用简单的String
从Text
中获取一个toString()
。您的分隔符'\1'
将在此处输入。在String
上分割'\1'
,将其与Hive分开。