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<HashSet<String>, HashMap<String, Double>>
”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<String, Float>.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?