apache-spark - 如何在 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 不创建托管表,而是创建外部表?
解决方案
现在默认禁用事务表对我来说似乎是最好的选择。
在 Ambari 内部,只需禁用默认创建事务表的选项即可解决我的问题。
设置为 false 两次 (tez, llap)
hive.strict.managed.tables = false
并根据需要在每个中手动启用table property
(以使用事务表)。
作为一种解决方法,使用手动 CTAS 也是一种选择。
推荐阅读
- mysql - 为日期范围查询正确优化 MySQL 数字数据?
- tensorflow - ValueError:检查目标时出错:预期dense_2具有形状(None,2)但得到形状为(321、3)的数组
- java - Jenkins 构建失败:无法创建 /var/lib/tomcat8/.m2
- flutter - 可以(应该?)堆栈将其大小扩展到其定位的孩子吗?
- phpstorm - 无法解析外部 Xdebug 连接的服务器名称
- c# - 从 Base64String 获取图像的高度和宽度
- javascript - 为什么reduce受浮点问题影响而for循环不受?
- python-3.x - 通过张量流旋转创建增强的训练数据
- optimization - “折叠”代码部分 - 就像关闭控制结构时
- python - 替换重复字符串但在挂载点