如何使用 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中的所有元素。
在 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中的所有元素。