我有一些火花代码可以将两个Arryas连接成一个,然后像这样形成一些:
def formatMap3(sep: String = "",
left: String = "", right: String = "")(m: Map[String, String]) = {
val items = m.toSeq.map{case (k, v) => {
s"$k$sep $v"}}
s"$left$items$right"
}
def formatMap3(m: String = "") = {
val items = m.map{case (k) => {
s"$k"}}
s"$items"
}
val combPrdGrp = custPrdGrp3.join(cmpgnPrdGrp3)
val combPrdGrp2 = combPrdGrp.groupByKey
val combPrdGrp3 = combPrdGrp2.map{case (k3, vals3) => {
val valsString3 = vals3.map{case (id3, m3) =>
s"$id3 $m3"
}
s"$k3 $valsString3"
}}
当我尝试打印如下结果时,出现以下错误:
scala> combPrdGrp3.collect.saveAsTextFile(file1)
<console>:60: error: value saveAsTextFile is not a member of Array[String]
combPrdGrp3.collect.saveAsTextFile(file1)
我只使用combPrdGrp3.collect
在屏幕上显示结果,但为什么saveAsTextFile
不起作用?
答案 0 :(得分:2)
saveAsTextFile
是一种用于spark中的RDD的方法。如果在RDD上调用collect
,它会转到节点并从RDD收集数据,返回RDD所代表的实际对象。如果您移除collect
,则saveAsTextFile
应按预期工作。