【发布时间】:2018-11-11 06:16:34
【问题描述】:
我正在使用 Spark 2.2,并且正在尝试基于数据框创建 Hive 表。
我只能使用以下数据创建一个新的 Hive 表:
result.write.mode(SaveMode.Overwrite).saveAsTable("db.resultTable")
当我尝试对分区做同样的事情时:
result.write.mode(SaveMode.Overwrite).partitionBy("year", "month", "day").saveAsTable("db.resultTable")
我总是得到错误:
Exception in thread "main" org.apache.spark.sql.AnalysisException: Operation not allowed: ALTER TABLE RECOVER PARTITIONS only works on table with location provided: `db`.`resultTable`;
注意:尽管有错误,但它创建了一个包含正确列的表。它还创建了分区,并且表中有一个位置,其中包含 Parquet 文件 (/user/hive/warehouse/db.db/resultTable/year=2017/month=1/day=1)。但它包含无数据。
我试图寻找一些答案,但还没有找到任何答案。根据这个thread,我做得很好。 (我也设置了hive.exec.dynamic.partition和hive.exec.dynamic.partition.mode)
有人知道我错过了什么或做错了什么吗?
【问题讨论】:
标签: apache-spark hive