错误:值saveAsTextFile不是scala.collection.Map[String,Long]的成员



我尝试了所有可能的方法,导入所有可能的库,并检查与saveAstextFile或saveAsSequenceFile相关的所有问题的答案,但这些都没有帮助。因此启动了一个新线程。我在尝试将rdd保存到HDFS时收到一个错误"error:value saveAsTextFile不是scala.collection.Map[String,Long] countResult.saveAsTextFile("tmp/testfile").的成员。我正在执行以下步骤。

1.scala> import org.apache.spark.SparkFiles
import org.apache.spark.SparkFiles
2.scala> val countrdd = sc.parallelize(Array( "hadoop","spark","hadoop","spark")).map( k => (k,1))
countrdd: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[17] at map at :28
3.scala> val countResult = countrdd.countByKey()
countResult: scala.collection.Map[String,Long] = Map(spark -> 2, hadoop -> 2)
4.scala> countResult.saveAsTextFile("tmp/testfile")
:33: error: value saveAsTextFile is not a member of scala.collection.Map[String,Long]
countResult.saveAsTextFile("tmp/testfile")

注意:我在独立集群上使用Spark2.X版本。

类似saveAstextFile的方法仅适用于RDD。如果是RDD,则可以执行任意数量的转换,然后可以使用类似的方法

但是如果您应用了任何类似countByKeyaction,那么类似这样的方法将不再可用。

您可以在此处使用reduceByKey,而不是countByKey。您可以在RDD API示例部分中找到更多详细信息。

或者你可以试试这个代码:-

val countrdd = sc.parallelize(Array( "hadoop","spark","hadoop","spark"))
val findRDD = .map(word => (word, 1))
.reduceByKey(_ + _)

希望这能解决你的问题

感谢

相关内容

  • 没有找到相关文章