错误:值saveastextfile不是unit-spark的成员

oxosxuxt  于 2021-05-27  发布在  Spark
关注(0)|答案(3)|浏览(542)

我正在尝试使用以下命令将结果保存到文本文件中:

results.collect().foreach { rule => println("[" + rule.antecedent.mkString(",") + "=>" + rule.consequent.mkString(",") + "]," + rule.confidence)}.saveAsTextFile("/user/cloudera/rules")

但我有个错误:

<console>:43: error: value saveAsTextFile is not a member of Unit
              results.collect().foreach { rule => println("[" + rule.antecedent.mkString(",") + "=>" + rule.consequent.mkString(",") + "]," + rule.confidence)}.saveAsTextFile("/user/cloudera/rules")

我需要改变什么?我不明白这个错误。。。

fcy6dtqo

fcy6dtqo1#

如果要保存,请使用:

results.map { rule => 
     "[" + rule.antecedent.mkString(",") + "=>" + rule.consequent.mkString(",") + "]," + rule.confidence
}.saveAsTextFile("/user/cloudera/rules")
omvjsjqw

omvjsjqw2#

这个 foreach 操作返回 Unit ,它是空返回值的替代:

scala> val a = (0 to 5).foreach(println)
0
1
2
3
4
5
a: Unit = ()

如果你想保存你原来的 results 您需要使用以下内容:

results.collect.saveAsTextFile(...)

否则,如果您试图将操作应用于 results.collect 然后保存结果,然后需要使用 map 对每个元素做些别的事情(因为 print 还返回 Unit ).

2vuwiymt

2vuwiymt3#

当我用初始化变量时,得到了相同的错误消息 spark.read 而不是 sc . 其中一个返回一个 DataSet 那根本就不可能 saveAsTextFile 方法,另一个返回一个rdd。希望它能帮助别人。

相关问题