PySpark - 从集合传递到RDD

12 浏览
0 Comments

PySpark - 从集合传递到RDD

我有以下转换:

rdd1.map(lambda line: line[3]).countByValue()

我应该如何存储这个结果以便保存为文本文件?

因为如果我尝试使用:

rdd1.map(lambda line: line[3]).countByValue().saveAsTextFile("directory.txt")

然而,saveAsTextFile不是集合的一部分。我该怎么做?

0
0 Comments

PySpark - 从一个集合传递到RDD

在PySpark中,当我们使用countByValue()函数时,它将返回一个Map集合而不是一个RDD。而saveAsTextFile()函数是在RDD上定义的,而不是在Map或集合上定义的。

如果我们想将countByValue()的结果保存到HDFS中,我们需要将Map转换为RDD,然后再使用saveAsTextFile()函数保存。

以下是一个类似的问题的解决方法:链接,该问题是使用Scala中的countByKey函数,但在我们的情况下,我们需要使用countByValue函数。

我们需要使用parallelize函数将Map转换为RDD,然后才能使用saveAsTextFile函数将其保存为文本文件。

以下是示例代码:

# 假设我们有一个Map集合
result_map = {"a": 1, "b": 2, "c": 3}
# 将Map转换为RDD
result_rdd = sc.parallelize(result_map.items())
# 保存为文本文件
result_rdd.saveAsTextFile("hdfs://path/to/save/result")

通过这种方法,我们可以将countByValue()的结果导出到HDFS中。

0