spark saveastextfile未按预期工作,请参阅下面的代码

7vux5j2d  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(405)
val reduced_rdd = mofm.reduceByKey(_ + _)
                      .map(item => item.swap)
                      .sortByKey(false)
                      .take(5)
                      .saveAsTextFile("/home/scrapbook/tutorial/IPLData/")

给出错误:

<console>:40: error: value saveAsTextFile is not a member of Array[(Int, String)]
   val reduced_rdd = mofm.reduceByKey(_ + _).map(item => item.swap).sortByKey(false).take(5).saveAsTextFile("/home/scrapbook/tutorial/IPLData/")
wbrvyc0a

wbrvyc0a1#

take(5) is an action on RDD which returns a Array (list).

这意味着没有saveastextfile方法可调用,因为数组没有此类方法。
这个错误也说明了这一点-
saveastextfile不是数组的成员
rdd上的任何操作都返回实际的数据集(取决于调用的操作)
您可以在spark-here-actions-in-spark-rdd中阅读不同的操作函数
现在,如果您想将rdd中的数据保存到文本文件中,您需要通过rdd调用saveastextfile(“path-to-file”)。

rggaifut

rggaifut2#

.take(5) or .collect

导致rdd类型被删除。
saveastextfile需要rdd;你不再有后采取(5)或收集。
你需要:

val x = ...
...
take(5)

sc.parallelize(x).saveAsTextFile("path")

相关问题