Java Spark 如何将 JavaPairRDD<HashSet<String>, HashMap<String, Double>> 保存到文件中?

Posted

技术标签:

【中文标题】Java Spark 如何将 JavaPairRDD<HashSet<String>, HashMap<String, Double>> 保存到文件中?【英文标题】:Java Spark how to save a JavaPairRDD<HashSet<String>, HashMap<String, Double>> to file? 【发布时间】:2018-04-27 04:47:40 【问题描述】:

经过一些复杂的聚合后,我得到了这个“JavaPairRDD&lt;HashSet&lt;String&gt;, HashMap&lt;String, Double&gt;&gt;”RDD,想将结果保存到文件中。我相信saveAsHadoopFile 是一个很好的API,但是在填写saveAsHadoopFile(path, keyClass, valueClass, outputFormatClass, CompressionCodec) 的参数时遇到了麻烦。任何人都可以帮忙吗?

【问题讨论】:

【参考方案1】:

您可以使用以下函数,然后将其解析为所需的结果。

rdd.saveAsTextFile ("hdfs:///complete_path_to_hdfs_file/");

但如果您想使用 saveAsHadoopFile API,则可以使用以下方法。

saveAsHadoopFile(complete_path_to_file, HashSet.class, HashMap.class, TextOutputFormat.class)

你也可以使用HadoopOutputFormat.class作为最后一个参数

更多信息可以参考这个链接 HadoopFile

【讨论】:

我们如何将其编写为 Avro 文件?我试过pairRdd&lt;String, Float&gt;.saveAsHadoopFile("/user/cloudera/avro/", String.class, Float.class, AvroOutputFormat.class);,得到了NullPointerException

以上是关于Java Spark 如何将 JavaPairRDD<HashSet<String>, HashMap<String, Double>> 保存到文件中?的主要内容,如果未能解决你的问题,请参考以下文章