《CDP企业数据云平台从入门到实践》——Hive4 新特性 (2) https://developer.aliyun.com/article/1228366?groupCode=ClouderaCDP
二、 Hive3 的变更细节
6. Hive3 Warehouse 拆分/影响
针对托管和外部两个仓库位置:
• 托管表在目录/warehouse/tablespace/managed/hive 下:可以通过“数据库”级别的“位置”设置调整位置。
• 外部表在目录/warehouse/tablespace/external/hive 下:可以通过“TABLE”级别的“位置”设置调整位置。
Hive3 的 Warehouse 构建模式,与 Hive1 和 Hive2 有很大不同,它覆盖 CREATE TABLE 中的位置:
• 在托管表创建中设置“位置”,违反了 posix 安全性,继而创建失败。
• 触发尝试有效 SBA 的外部代码路径。
• 设置“位置”只能用于“外部”表。
7. Hive 的细微默认值变更
Hive 的细微默认值变更,比如 CREATE TABLE,在 Hive 3 中是创建一个托管 ACID表,而在 Hive1 和 2 中,是创建一个托管(非 ACID)表,这意味着:
• 如果“CREATE TABLE”表是应用程序工作流程的一部分,则该表的使用者必须是 Hive 或使用 Spark HWC,因为该表将是一个 ACID 表。
• 或者,将这些“CREATE TABLE”语句转换为“CREATE EXTERNAL TABLE”(带有清除)以保持与“经典托管表”之前相同的行为。
在 CDP 7.1.4 中,新的“会话”级别配置将提供“CREATE TABLE”到“CREATE EXTERNAL TABLE”的自动转换。保存需要“经典”托管表的旧脚本的返工,结果是一个具有清除功能的“外部”表。
• 用于会话级别控制的 JDBC 参数:hiveCreateAsExternalLegacy=true
• HS2 级别控制的 HS2 配置:hive.create.as.external.legacy=true
8. Hive3 的 ODBC 设置
推荐设置两个参数,来调整 ODBC 驱动程序设置(见下图):
• Use Native Query = True(选中)
• Get Tables With Query = False(不选)
通过以上设置,可以实现 Hive 访问性能优化,因此这些设置的相反值很可能会导致通过此 ODBC 接口使用 Hive 的应用程序性能不佳。
9. Spark 与 Hive 托管表的集成
Spark 与 Hive 托管表的集成,主要是 Spark 读写 Hive 表的情况:
• 托管表的访问模式推荐使用 HWC(JDBC 模式)低容量处理模式。
• 也可以直接使用 Hive Direct Read/Spark SQL 模式来读取托管表。
• 写入仍需要通过 HWC 模式。
• 同时在读取时会存在未进行权限验证直接访问的安全隐患。
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (4) https://developer.aliyun.com/article/1228361?groupCode=ClouderaCDP