Spark 2.0 ' java.lang.ClassCastException: java.lang.Integer



我们正在维护一个Hive数据仓库,并使用sparkSQL对Hive数据库进行查询并生成报告。我们在AWS EMR环境中使用Spark 1.6,运行良好。我想升级我们的环境火花2.0,但我得到一个非常奇怪的铸造错误与日期字段。在spark 2.0中查询任何包含DATE类型的列的现有表都会抛出java.lang.ClassCastException: java.lang.Integer cannot be cast to java.sql.Date错误。

下面是Hive数据库中表格的简化示例:

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中可以正常工作。

使用INSERT INTO语法填充spark 1.6的HiveContext。

有人看到这个问题吗?是否有一个配置值,我需要设置得到spark 2.0工作与日期字段拼花格式?

在spark 2.0.0中,这个在VectorizedParquetRecordReader类中失败。为了解决这个问题,你可以在读取数据之前执行下面的命令。

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

相关内容

  • 没有找到相关文章

最新更新