gpt4 book ai didi

java - 在 Java 中使用 Avro 的 MapReduce : String vs CharSequence vs Utf8 data types

转载 作者:可可西里 更新时间:2023-11-01 14:44:51 26 4
gpt4 key购买 nike

我是使用 Avro 编写 Hadoop MapReduce 的初学者,不清楚传入 map/reduce 方法与 Pair with String、CharSequence 或 Utf8 之间有什么区别?

如果字符串只是简单的“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));
}

感谢任何帮助!

最佳答案

CharSequence is an interface that "bundles"大多数基于字符的实现,如 StringBuilderStringBufferCharBufferString 和 Avro Utf8

String 是不可变的,这意味着您无法修改内部数据 - 您所做的每一次修改都会导致创建一个新的 String 对象。

Utf8 on the other hand will allow you to modify its internal buffer ("mutable") ,与使用 String 实例相比,这将产生更少的垃圾。

所以你可以说使用 CharSequence 是最灵活的解决方案,因为它允许你传递比专门实现更多的字符串表示,你可以从可用的实现中进行选择取决于您的需求。

关于java - 在 Java 中使用 Avro 的 MapReduce : String vs CharSequence vs Utf8 data types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20475381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com