我目前正在通过Scala试用Apache Spark。我当前正在使用Spark Core 2.4.3版本(在我的build.sbt文件中定义)。我正在运行一个简单的示例:通过文本文件生成RDD,并过滤所有包含“ pandas”一词的行。之后,我将使用一个操作来计算文件中实际包含该单词的行数。如果仅尝试计算文件的总行数,一切正常,但是如果我应用过滤器转换然后尝试计算元素的数量,则它无法完成执行。
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.SparkContext._
println("Creating Context")
val conf = new SparkConf().setMaster("local").setAppName("Test")
val sc = new SparkContext(conf)
val lines = sc.textFile("/home/lbali/example.txt")
val pandas = lines filter(line => line.contains("pandas"))
println("+++++ number of lines: " + lines.count()) // this works ok.
println("+++++ number of lines with pandas: " + pandas.count()) // This does not work
sc.stop()
答案 0 :(得分:0)
尝试保留数据框。如果在同一个数据帧上执行多个操作,则最好将其持久保存,而不是再次执行该循环
lines.persist(MEMORY_AND_DISK)
答案 1 :(得分:-1)
我认为我找到了解决方案,将Scala版本从2.12.8降级到2.11.12解决了该问题。