代码:
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()
}
环境:
也请让我知道这是指定文件路径的正确方法 在代码中(在文本文件之后)?
错误:阶段0.0中的任务0.0中的异常(TID 0) java.lang.ArrayIndexOutOfBoundsException:2
答案 0 :(得分:0)
它表示您正在获取超出范围的数组索引错误。您没有行号,但我怀疑有问题的行是
val ratings = file.map(x => x.toString().split("\t")(2))
错误的可能原因是,您有一行包含一个或更少的选项卡,将其拆分为一个没有索引2的数组,然后尝试访问索引2处不存在的元素。记住这一点可能会有所帮助该数组是索引0,所以索引2实际上是指第三项。此外,如果您期望至少有3个项目,而且并非一次失误,那么您需要执行一次清洁检查,以确保您没有收到任何不合格的数据。