首页 > 解决方案 > 如何在 HDP 3.1 中作为外部在 hive 中写入(创建)表

问题描述

默认

spark-shell --conf spark.hadoop.metastore.catalog.default=hive
val df:Dataframe = ...
df.write.saveAsTable("db.table") 

失败,因为它尝试写入内部/托管/事务表(请参阅如何在不使用 HDP 3.1 中的仓库连接器的情况下将表从 spark 写入配置单元)。

如何告诉 spark 不创建托管表,而是创建外部表?

标签: apache-sparkhiveapache-spark-sqlclouderahdp

解决方案


现在默认禁用事务表对我来说似乎是最好的选择。

在 Ambari 内部,只需禁用默认创建事务表的选项即可解决我的问题。

设置为 false 两次 (tez, llap)

hive.strict.managed.tables = false

并根据需要在每个中手动启用table property(以使用事务表)。

作为一种解决方法,使用手动 CTAS 也是一种选择。


推荐阅读