有一个hive内部表存储为序列文件,第一列类型为字符串,字段分隔符为'\ 1',我想直接使用Mapreduce处理它,并找出输入密钥是BytesWritable。我的问题是hive如何在sequencefile中存储数据?我得到bytesWritable键的原因是第一列类型是字符串吗?我没有将地图的密钥分隔符配置为'\ 1',所以我对第二个问题感到困惑
答案 0 :(得分:2)
Hive不会将第一列视为SequenceFile的键。相反,密钥完全被忽略。 [1] [2]。因此,当您编写Mapper以在Hive SequenceFile上运行时,您也应该忽略Key。您的所有列都将成为Value的一部分。
如果您的值也是BytesWritable
,并且您希望它为Text
,请尝试SequenceFileAsTextInputFormt
(docs)。 this similar question问题的答案可能会帮助您进行设置。您应该可以使用简单String
从Text
获得toString()
。你的分离器'\1'
将进入这里。将您的String
拆分为'\1'
,将其与Hive中的列分开。