为什么在Scala中编写代码以运行Spark应用程序时出现错误提示?

时间:2018-12-04 18:01:10

标签: scala apache-spark

代码:

import org.apache.spark.{SparkConf, SparkContext}


object simpleSpark extends App {

    val sparkConf = new SparkConf();
    sparkConf.setMaster("local")
    sparkConf.setAppName("First Application")

    val sc = new SparkContext(sparkConf)


    val file = sc.textFile("datasets/movieratings.txt")
    val ratings = file.map(x => x.toString().split("\t")(2))
    val result = ratings.countByValue()
}

环境:

  • 操作系统:Windows
  • IDE:IntelliJ

也请让我知道这是指定文件路径的正确方法 在代码中(在文本文件之后)?

错误:阶段0.0中的任务0.0中的异常(TID 0) java.lang.ArrayIndexOutOfBoundsException:2

enter image description here

1 个答案:

答案 0 :(得分:0)

它表示您正在获取超出范围的数组索引错误。您没有行号,但我怀疑有问题的行是

val ratings = file.map(x => x.toString().split("\t")(2))

错误的可能原因是,您有一行包含一个或更少的选项卡,将其拆分为一个没有索引2的数组,然后尝试访问索引2处不存在的元素。记住这一点可能会有所帮助该数组是索引0,所以索引2实际上是指第三项。此外,如果您期望至少有3个项目,而且并非一次失误,那么您需要执行一次清洁检查,以确保您没有收到任何不合格的数据。