我正在尝试读取管道分隔的文本文件,这是我的代码
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。我无法弄清楚这一点。
感谢任何帮助。
由于