如何使用 mapreduce 从具有 RCFile 存储格式的 HDFS 解析 Map<string,string>?

How to parse Map<string,string> from HDFS with RCFile storage format using mapreduce?

在 hive 中,有一个类型为 Map<string,string> 的列。我想使用 mapreduce 从 hdfs 解析地图的键值信息。功能图如下:

void map(LongWritable key, BytesRefArrayWritable value, Context context) {
    Text text = new Text();
    // this is the map column
    BytesRefWritable m  = value.get(1);
    text.set(m.getData(), m.getStart(), m.getLength())
    context.write(text, NullWritable.get())
}

然后我从输出文件中读取,发现key-value解析如下: key1:value1key2:value2...
没有任何分隔符我无法解析键值对。
那么,如何从hdfs解析Map<string,string>呢?

好的,我会自己回答这个问题。

在hdfs中,Map中的键值对或Array中的元素之间用\002分隔。键和值之间的分隔符是\003。据此,我们可以解析hdfs中的所有元素。