我们正在维护一个配置单元数据仓库,并使用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格式的日期字段?
1条答案
按热度按时间m4pnthwp1#
在spark 2.0.0中,这个在vectorizedparquetrecordreader类中失败。对于解决方法,您可以在读取数据之前执行以下命令。