我尝试使用以下方法将结果保存到文本文件中:
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")
我需要改变什么?我不明白错误......
答案 0 :(得分:0)
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
并对每个元素执行其他操作(因为{{ 1}}也会返回print
)。
答案 1 :(得分:0)
如果您想节省使用:
results.map { rule =>
"[" + rule.antecedent.mkString(",") + "=>" + rule.consequent.mkString(",") + "]," + rule.confidence
}.saveAsTextFile("/user/cloudera/rules")
答案 2 :(得分:0)
当我使用spark.read
而不是sc
初始化变量时,我得到了相同的错误消息。其中一个返回不具有DataSet
方法的saveAsTextFile
,另一个返回具有RDD的RDD。希望对别人有帮助。