转换后,Scala / Spark中的操作未执行

时间:2019-08-19 00:59:23

标签: scala apache-spark

我目前正在通过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()

2 个答案:

答案 0 :(得分:0)

尝试保留数据框。如果在同一个数据帧上执行多个操作,则最好将其持久保存,而不是再次执行该循环

lines.persist(MEMORY_AND_DISK)

答案 1 :(得分:-1)

我认为我找到了解决方案,将Scala版本从2.12.8降级到2.11.12解决了该问题。