【发布时间】:2020-10-09 00:18:16
【问题描述】:
org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.UnsupportedOperationException: Parquet 不支持时间戳。见 HIVE-6384;
在 Azure Databricks 中执行以下代码时出现上述错误。
spark_session.sql("""
CREATE EXTERNAL TABLE IF NOT EXISTS dev_db.processing_table
(
campaign STRING,
status STRING,
file_name STRING,
arrival_time TIMESTAMP
)
PARTITIONED BY (
Date DATE)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION "/mnt/data_analysis/pre-processed/"
""")
我在 Azure 数据块中使用 hive,当我运行命令 spark_session.conf.get("spark.sql.hive.metastore.version") 时,它显示为 Hive 0.13 版本。
Hive 0.13 不支持 parquet 文件的 Timestamp 数据类型。
在我当前的数据集中,我有多个 Timestamp 数据类型的列。 根据 Hive-6384 Jira,从 Hive-1.2 开始,您可以在 parquet 表中使用时间戳、日期类型。
如何升级 Hive/Hive Metastore 版本?
【问题讨论】:
标签: azure apache-spark hadoop hive azure-databricks