saveAsTextFile不是Array [String] spark RDD的成员

时间:2015-08-21 22:53:22

标签: scala apache-spark

我有一些火花代码可以将两个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不起作用?

1 个答案:

答案 0 :(得分:2)

saveAsTextFile是一种用于spark中的RDD的方法。如果在RDD上调用collect,它会转到节点并从RDD收集数据,返回RDD所代表的实际对象。如果您移除collect,则saveAsTextFile应按预期工作。