spark 2.0`java.lang.classcastexception:java.lang.integer不能转换为java.sql.date`error

chhkpiq4  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(405)

我们正在维护一个配置单元数据仓库,并使用sparksql对配置单元数据库进行查询并生成报告。我们正在aws emr环境中使用spark 1.6,它运行良好。我想将我们的环境升级到spark 2.0,但是我在日期字段中遇到了一个非常奇怪的铸造错误。任何包含日期类型列的现有表都将被抛出 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.sql.Date 在spark 2.0中查询时出错。
下面是您可以在我们的配置单元数据库中找到的表的简化示例: CREATE TABLE IF NOT EXISTS test.test_table ( column_1 STRING, column_2 STRING, ) PARTITIONED BY (column_3 DATE) STORED AS PARQUETFILE ; 查询 SELECT * FROM test.test_table limit 5 在spark 2.0中出现上述错误时失败,但在spark 1.6中工作正常。
使用spark 1.6 hivecontext填充这些表 INSERT INTO 语法。
有人见过这个问题吗?我是否需要设置一个配置值来让spark 2.0使用parquet格式的日期字段?

m4pnthwp

m4pnthwp1#

在spark 2.0.0中,这个在vectorizedparquetrecordreader类中失败。对于解决方法,您可以在读取数据之前执行以下命令。

spark.sql("set spark.sql.parquet.enableVectorizedReader=false")

相关问题