在地图上过滤不会阻止Spark中的ArrayIndexOutofBounds

时间:2017-08-31 05:17:04

标签: scala apache-spark apache-spark-sql

我正在尝试读取管道分隔的文本文件,这是我的代码

val mySchema = new StructType(Array(
  new StructField("COL1",StringType,true),
  new StructField("COL2",StringType,true),
  new StructField("COL3",StringType,true),
  new StructField("COL4",StringType,true),
  new StructField("COL5",StringType,true),
))

val myRDD = sparkSession
            .sparkContext
            .textFile(myFilePath)
            .map(_.split("[|]"))
            .filter(_.length >= 5)
            .map(r => Row(r(0),r(1),r(2),r(3),r(4)))

val myDF = sparkSession.sqlContext.createDataFrame(myRDD,mySchema)

val myView = myDF.createOrReplaceTempView("MY_VIEW")

val totalRecords = saprkSession.sqlContext.sql("SELECT * FROM MY_VIEW")

val countStr = "Total Records ="+totalRecords.count();

我在日志中收到以下错误

WARN TaskSetManager: Lost task 0.0 in stage 52.0 (TID 2460, executor 2): java.lang.ArrayIndexOutOfBoundsException: 4

由于我们在将当前行拆分为列后过滤记录,因此仍然会抛出ArrayIndexOutOfBounds。我无法弄清楚这一点。

感谢任何帮助。

由于

0 个答案:

没有答案