我已经用分区创建了一个orc表。数据使用Apache Pig使用orc格式的Apache Pig加载到HDF中。然后在其中创建蜂巢表。分区列是年,月和日。当我尝试使用SPARK SQL读取该表时,我会出于界限异常而获得数组。请在下面找到代码和错误消息。
代码:
myTable = spark.table("testDB.employee")
myTable.count()
错误:
错误执行程序:阶段10.0中任务8.0中的异常(TID 66) java.lang.indexoutofboundsexception:toIndex = 47
此表中的数据类型是字符串,时间戳&双倍的。当我尝试使用SPARK SQL查询的Select语句选择所有列时,我将获得类别的cast Exception。
py4j.protocol.py4jjavaerror:致电时发生错误 O536.Showsstring。:org.apache.spark.sparkexception:由于 阶段失败:阶段12.0中的任务0失败1次,最近 失败:阶段12.0中的任务丢失0.0(TID 84,Localhost,executor 驱动程序):java.lang.classcastException:org.apache.hadoop.io.text 不能被施放到org.apache.hadoop.hive.serde2.io.timestampwratible
之后,我尝试使用下面给出的摘要代码将其投放到时间戳。但是在那之后,我也将数组出于界限。
df2 = df.select('dt',unix_timestamp('dt', "yyyy-MM-dd HH:mm:ss") .cast(TimestampType()).alias("timestamp"))
如果未指定分区过滤器,则可能导致此问题。在我这边,当我指定过滤器之间的日期时,它会出于限制异常解决。