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>> 保存到文件中?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java 将文本文件作为一个字符串读入 Spark DataFrame

Spark Java API:如何将 JavaRDD 转换为 RDD 类型

我如何将平面数据框转换为 spark(scala 或 java)中的嵌套 json

如何将复杂的外部变量(例如映射值)从 Spark 与 Java 中的驱动程序传递给 UDF?

如何将具有值的列添加到 Spark Java 中的新数据集?

如何使用 Java 将 unix 纪元的列转换为 Apache spark DataFrame 中的日期?