在apache spark上执行sql查询时出现arrayindexoutofbound异常
Posted
技术标签:
【中文标题】在apache spark上执行sql查询时出现arrayindexoutofbound异常【英文标题】:arrayindexoutofbound exception while executing sql query on apache spark 【发布时间】:2018-03-07 18:19:59 【问题描述】:我在 Spark 中使用以下命令在 Spark 中创建了一个表
case class trip(trip_id: String, duration: String, start_date: String,
start_station: String, start_terminal: String, end_date: String,
end_station: String, end_terminal: String, bike: String,
subscriber_type: String, zipcode: String)
val trip_data = sc.textFile("/user/sankha087_gmail_com/trip_data.csv")
val tripDF = trip_data
.map(x=> x.split(","))
.filter(x=> (x(1)!= "Duration"))
.map(x=> trip(x(0),x(1),x(2),x(3),x(4),x(5),x(6),x(7),x(8),x(9),x(10)))
.toDF()
tripDF.registerTempTable("tripdatas")
sqlContext.sql("select * from tripdatas").show()
如果我正在运行上面的查询(即选择 *),那么我会得到想要的结果,但是如果我运行下面的查询,那么我会得到下面的异常:
sqlContext.sql("select count(1) from tripdatas").show()
18/03/07 17:59:55 错误 scheduler.TaskSetManager: 阶段 2.0 中的任务 1 失败 4 次;中止工作 org.apache.spark.SparkException:作业因阶段失败而中止:阶段 2.0 中的任务 1 失败 4 次,最近一次失败:阶段 2 中丢失任务 1.3。 0(TID 6,datanode1-cloudera.mettl.com,执行程序 1):java.lang.ArrayIndexOutOfBoundsException:10 在$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$anonfun$3.apply(:31) 在$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$anonfun$3.apply(:31)***
【问题讨论】:
如果错误信息由sqlContext.sql("select count(1) from tripdatas").show()
显示,那么错误信息也应该与sqlContext.sql("select * from tripdatas").show()
一起出现
【参考方案1】:
检查您的数据。如果数据中的任何行包含少于 11 个元素,您就会看到该错误。
您可以尝试通过这种方式查看最小列数。
val trip_data = spark.read.csv("/user/sankha087_gmail_com/trip_data.csv")
println(trip_data.columns.length)
【讨论】:
我正在尝试您建议的命令,但出现以下异常:`scala> val trip_data_sample = spark.read.csv("/user/sankha087_gmail_com/trip_data.csv")以上是关于在apache spark上执行sql查询时出现arrayindexoutofbound异常的主要内容,如果未能解决你的问题,请参考以下文章
Spark SQL - org.apache.spark.sql.AnalysisException
调用 saveAsTable 时出现 org.apache.spark.sql.AnalysisException
执行 spark-shell 时出现 NoClassDefFoundError com.apache.hadoop.fs.FSDataInputStream
在 Spark 2.0 中访问向量列时出现 MatchError