有一个配置单元内部表,存储为序列文件,第一列类型为字符串,字段分隔符为'\ 1',我想直接使用Mapreduce处理它,并发现输入键是BytesWritable。我的问题是配置单元如何将数据存储在sequencefile中?我得到bytesWritable键的原因是第一列类型是字符串吗?我没有将 map 的键分隔符配置为'\ 1',所以我对第二个问题感到困惑

最佳答案

Hive不会将第一列视为SequenceFile的键。相反,密钥将被完全忽略。 [1] [2]。因此,当您编写映射器以对Hive SequenceFile进行操作时,还应该忽略Key。您所有的列都将是“值”的一部分。

万一您的Value也是BytesWritable并且您希望它是Text,请尝试SequenceFileAsTextInputFormt(docs)。 this similar question问题的答案可能有助于您进行设置。您应该能够使用简单的StringText中获取一个toString()。您的分隔符'\1'将在此处输入。在String上分割'\1',将其与Hive分开。

10-07 13:25