《CDP企业数据云平台从入门到实践》——Hive5 新特性 (1) https://developer.aliyun.com/article/1228367?groupCode=ClouderaCDP
二、 Hive3 的变更细节
1. Hive Metastore(HMS)转换层
• 允许在各种 Metastore 用户之间安全共享元数据,如 Hive、Spark 和 Impala。
• 每个客户端技术(Hive、Spark 和 Impala)都支持读取和写入数据源的功能列表。
• Metastore 将这些功能与所请求的表相匹配,如果请求中存在不兼容,Metastore将向客户端提出异常并终止对表详细信息的内联请求。
在集成中推荐使用 NON-IMPERSONATION(非模拟),doas=false 方式。
2. 通过翻译层进行规范化的副作用
Hive Metastore 转换层在 HDP 3.1.5 及更高版本中可用,包括 CDP-PvC Base 7.1+。
• 更改了“数据库”LOCATION 值的“使用”:LOCATION 在外部表中可用,而在托管表中不可用,从历史上看(直到 HDP 3.1.4),它控制了“托管”表的基本目录,而现在(HDP 3.1.5 + 和 CDP-PvC Base 7.1),它代表“外部”位置的默认基本目录。
• 控制“托管”表的基本位置,可以通过数据库的“MANAGEDLOCATION”进行控制(仅限 CDP 7.1+)。
• 禁止非 ACID 托管表:https://issues.apache.org/jira/browse/HIVE-22158
3. 更改托管(ACID)表的“默认”位置
在 CDP Runtime 7.1 及更高版本中可用(不在 HDP 3 中)。
先决条件:
• 对于非模拟(doas=false),“hive”超级用户需要对该位置的 RW 访问权限。
• SHOW DATABASE 不会显示托管位置。
4. 结构转换为 Hive Metastore
在 Hive 或 Spark 中创建的表由 Hive Metastore 翻译和调整,并在内部存储以匹配公认的最佳实践和术语。
• 在 Hive 中创建 CREATE Table 默认创建支持 ACID 的托管表,需要文件格式是ORC。
• 在 Hive 和在 Spark 中创建 CREATE EXTERNAL 都默认创建外表,这种外表的表结构和数据是分离的,当 DROP Table 后数据依然存在。
• 在 Spark 中创建 CREATE 表默认创建 EXTERNAL/PURGE 表,这种表的表格式和数据是一体的,当 DROP Table 后,数据也跟着移除。
• 外部表可以配置 PURGE(相当于“经典”托管表)。
5. Hive1 到 Hive3 会话
• 执行引擎从 Hive on MR 迁移到 Hive on TEZ 的,检查会阻碍 TEZ 的旧会话配置。
• 原本就是 Hive on TEZ 的,CBO 已经成熟,但许多旧的“会话”设置可能会产生负面影响。
因此推荐以下操作:
• 查看查询设置的会话值,删除它们并重试,在相关的地方添加回来。
• 检查统计数据,并在必要时刷新这些数据。
• 定期进行 Rebalance,整合小文件。
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (3) https://developer.aliyun.com/article/1228362?groupCode=ClouderaCDP