Mar*_*ina 2 java hadoop mapreduce avro
我是用Avro编写Hadoop MapReduce的初学者,并且不清楚将String,CharSequence或Utf8对传递给map / reduce方法之间的区别是什么?
如果字符串仅仅是“ hello world”之类的东西怎么办?
例如,这是一个简单的映射方法,在这种情况下,使用CharSequence作为输出键类型:
public void map(Pair<CharSequence, Integer> datum, AvroCollector<Pair<CharSequence, Integer>> collector, Reporter reporter) throws IOException {
Integer number_one = new Integer(1);
String output_key = "hello world";
collector.collect(new Pair<CharSequence, Integer>(output_key, one));
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
CharSequence是“捆绑”的界面大多数基于实施方式中的人物的StringBuilder,StringBuffer,CharBuffer,String和在阿夫罗Utf8。
String是不可变的,这意味着您无法修改内部数据-您所做的每次修改都会导致String创建新的对象。
Utf8另一方面,将允许您修改其内部缓冲区(“可变”),与使用String实例相比,这将产生更少的垃圾。
因此,可以说using CharSequence是最灵活的解决方案,因为它允许您传递比专业实现更多的Strings表示形式,您可以根据自己的需要从可用的实现中进行选择。
| 归档时间: |
|
| 查看次数: |
1039 次 |
| 最近记录: |