java - 在 Hadoop DistributedCache 上存储 TreeSet

标签 java serialization hadoop mapreduce distributed-cache

我正在尝试将 TreeSet 存储在 DistributedCache 上,以供 Hadoop map-reduce 作业使用。到目前为止,我有以下用于将文件从 HDFS 添加到 DistributedCache 的方法:

Configuration conf = new Configuration();
DistributedCache.addCacheFile(new URI("/my/cache/path"), conf);
Job job = new Job(conf, "my job");
// Proceed with remainder of Hadoop map-reduce job set-up and running

如何有效地将 TreeSet(我已经在此类中构建)添加到我要添加到 DistributedCache 的文件中?我应该使用 Java 的 native 序列化以某种方式将其序列化到文件中吗?

请注意,TreeSet 在启动 map-reduce 作业的主类中构建一次。 TreeSet 永远不会被修改,我只是希望每个映射器都可以只读访问这个 TreeSet,而不必一遍又一遍地重建它。

最佳答案

序列化 TreeSet 似乎是一种方法。在这种情况下,您不需要创建 HashMap。只需从文件中反序列化 TreeSet 并使用这些方法根据键进行搜索。我喜欢这种方法。

关于java - 在 Hadoop DistributedCache 上存储 TreeSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16136842/

相关文章:

c# - DataContractSerializer,将 T 的序列化附加到 List<T> 的序列化

java - 没有内部类的 Json Jackson 反序列化

hadoop - Hive 中的 'InputFormat, OutputFormat' 和 'Stored as' 有什么区别?

hadoop 将本地文件系统文件夹复制到 HDFS

java - Eclipse 生成的默认 Java 异常处理代码

java - 使用 url 片段中的参数重新加载页面会在 vaadin 中添加额外的斜杠字符

ruby-on-rails - Rails : NameError (uninitialized constant UserSerializer)

database - 向 hive 表中插入数据

java - Java 是否有类成员的动态变量?

java - 感知器学习——最重要的特征