Hive Catalog

数据仓库 PALO

  • 功能发布记录
  • 操作手册1
    • LDAP认证
    • 时区
    • 使用S3-SDK访问对象存储
    • 权限管理
    • 物化视图
    • 变量
    • 资源管理
    • 数据更新与删除
      • 标记删除
      • Sequence-Column
      • 数据更新
      • 数据删除
    • 备份与恢复
      • 备份与恢复
    • 数据导出1
      • SELECT INTO OUTFILE
      • MySQL Dump
      • 数据导出概述
      • Export
    • 数据导出
      • 全量数据导出
      • 导出查询结果集
      • 导出总览
      • 导出数据到外部表
    • 查询加速1
      • 查询缓存
      • 物化视图
        • 同步物化视图
        • 物化视图概览
        • 异步物化视图
          • 异步物化视图常见问题
          • 最佳实践
          • 异步物化视图概述
          • 创建、查询与维护异步物化视图
    • 数据导入
      • JSON格式数据导入说明
      • 导入本地数据
      • 导入BOS中的数据
      • 导入事务和原子性
      • 通过外部表同步数据
      • 使用JDBC同步数据
      • 列的映射、转换与过滤
      • 订阅Kafka日志
      • 严格模式
      • 导入总览
    • 数据更新与删除1
      • 事务
      • 数据更新
        • 主键模型的导入更新
        • 主键模型的 Update 更新
        • 数据更新概述
        • 主键模型的更新并发控制
        • 聚合模型的导入更新
      • 数据删除
        • 删除操作概述
        • Truncate 操作
        • 表原子替换
        • Delete 操作
        • 基于导入的批量删除
        • 临时分区
    • 数据导入1
      • 高并发导入优化(Group Commit)
      • 导入概览
      • 异常数据处理
      • 导入高可用性
      • 导入时实现数据转换
      • 数据源
        • Kafka
        • S3 兼容存储
        • 从其他 TP 系统迁移数据
        • HDFS
        • 从其他 AP 系统迁移数据
        • Flink
        • 本地文件
      • 导入方式
        • Broker Load
        • MySQL Load
        • Insert Into Values
        • Stream Load
        • Insert Into Select
        • Routine Load
      • 文件格式
        • CSV
        • JSON
        • Parquet
        • ORC
      • 复杂数据类型
        • MAP
        • Variant
        • JSON
        • STRUCT
        • Bitmap
        • HLL
        • ARRAY
  • 开发指南
    • 迁移ClickHouse数据
    • Doris集群间数据迁移
    • 数据更新与删除
      • 事务
      • 数据更新
        • 主键模型的导入更新
        • 主键模型的 Update 更新
        • 数据更新概述
        • 主键模型的更新并发控制
        • 聚合模型的导入更新
      • 数据删除
        • 删除操作概述
        • Truncate 操作
        • 表原子替换
        • Delete 操作
        • 基于导入的批量删除
        • 临时分区
    • 查询加速
      • 查询缓存
      • Colocation Join
      • 高并发点查
      • Hint
        • Hint 概述
        • Leading Hint
        • Distribute Hint
      • 物化视图
        • 同步物化视图
        • 物化视图概览
        • 异步物化视图
          • 异步物化视图常见问题
          • 最佳实践
          • 异步物化视图概述
          • 创建、查询与维护异步物化视图
      • 高效去重
        • BITMAP 精准去重
        • HLL 近似去重
      • 优化技术原理
        • TOPN 查询优化
        • 统计信息
        • Pipeline 执行引擎
        • 查询优化器介绍
        • Runtime Filter
      • 查询调优概述
        • 调优概述
        • 诊断工具
        • 分析工具
        • 调优流程
      • 查询优化实践
        • 常见调优参数
        • 计划调优
          • 使用 Hint 控制代价改写
          • 使用异步物化视图透明改写
          • 使用 Leading Hint 控制 Join 顺序
          • 优化表 Schema 设计
          • 使用分区裁剪优化扫表
          • 优化索引设计和使用
          • 使用 Hint 调整 Join Shuffle 方式
          • DML 计划调优
          • 使用 Colocate Group 优化 Join
          • 使用同步物化视图透明改写
          • 使用 SQL Cache 加速查询
        • 执行调优
          • 数据倾斜处理
          • RuntimeFilter 的等待时间调整
          • 并行度调优
    • 数据查询
      • 连接(JOIN)
      • 子查询
      • 复杂类型查询
      • 列转行 (Lateral View)
      • MySQL 兼容性
      • 聚合多维分析
      • 分析函数(窗口函数)
      • 公用表表达式(CTE)
      • 自定义函数
        • 别名函数
        • Java UDF, UDAF, UDTF
    • 数据导出
      • SELECT INTO OUTFILE
      • MySQL Dump
      • 最佳实践
      • 数据导出概述
      • Export
    • 数据导入
      • 高并发导入优化(Group Commit)
      • 异常数据处理
      • 导入高可用性
      • 导入时实现数据转换
      • 导入最佳实践
      • 数据源
        • Kafka
        • Snowflake
        • S3 兼容存储
        • Google Cloud Storage
        • 从其他 TP 系统迁移数据
        • Azure Storage
        • 腾讯云 COS
        • MinIO
        • HDFS
        • 阿里云 OSS
        • 华为云 OBS
        • 从其他 AP 系统迁移数据
        • Flink
        • Redshift
        • Amazon S3
        • 本地文件
        • BigQuery
      • 导入方式
        • Broker Load
        • MySQL Load
        • Insert Into Values
        • Stream Load
        • Insert Into Select
        • Routine Load
      • 文件格式
        • CSV
        • JSON
        • Parquet
        • ORC
      • 复杂数据类型
        • MAP
        • Variant
        • JSON
        • STRUCT
        • Bitmap
        • HLL
        • ARRAY
    • BI工具接入
      • Sugar
      • Navicat
      • Tableau
      • DBeaver
      • 永洪BI
      • FineBI(帆软)
    • 数据库连接
      • 通过 MySQL 协议连接
      • 基于 Arrow Flight SQL 的高速数据传输链路
    • 湖仓一体
      • 分析 S3或HDFS 上的文件
      • 湖仓一体概述
      • SQL 方言兼容
      • 弹性计算节点
      • 云服务认证接入
      • 元数据缓存
      • 外表统计信息
      • 数据缓存
      • 数据库分析
        • MySQL
        • JDBC Catalog
        • Oracle
        • OceanBase
        • SAP HANA
        • 阿里云 MaxCompute
        • ClickHouse
        • PostgreSQL
        • IBM Db2
        • SQL Server
        • Elasticsearch
      • 湖仓一体最佳实践
        • 使用 PALO 和 Paimon
        • 使用 PALO 和 Iceberg
        • 使用 PALO 和 Hudi
        • 使用 PALO 和 LakeSoul
      • 数据湖构建
        • Iceberg
        • Hive
      • 数据湖分析
        • Hudi Catalog
        • 阿里云 DLF
        • Iceberg Catalog
        • Paimon Catalog
        • Hive Catalog
    • 数据表设计
      • 行业混存
      • 数据压缩
      • Schema 变更
      • 数据类型
      • 自增列
      • 概览
      • 数据库建表最佳实践
      • 冷热数据分层
        • SSD 和 HDD 层级存储
        • 远程存储
        • 冷热数据分层概述
      • 表索引
        • 倒排索引
        • 前缀索引与排序键
        • N-Gram 索引
        • BloomFilter 索引
        • 索引概述
      • 数据划分
        • 数据分桶
        • 数据分布概念
        • 动态分区
        • 自动分区
        • 手动分区
        • 常见文档
      • 数据模型
        • 使用注意
        • 模型概述
        • 主键模型
        • 明细模型
        • 聚合模型
  • 版本发布历史
    • 百度数据仓库 Palo 2.0 版本全新发布
  • SQL手册
    • 字面常量
    • 别名
    • SQL-手册
    • 数据类型
    • SQL语句
    • 注释
    • 内置函数
    • 白名单管理
    • SQL操作符
    • 内置函数
      • 聚合函数
      • 位操作函数
      • 字符串函数
      • 条件函数
      • 数学函数
      • JSON解析函数
      • 类型转换函数
      • 格式转换函数
      • 通用函数
      • 时间和日期函数
      • BITMAP函数
      • 窗口函数
      • 哈希函数
      • HLL函数
    • 语法帮助
      • DML
        • INSERT
        • ROUTINE-LOAD
        • RESTORE
        • SELECT-INTO-OUTFILE
        • ALTER-ROUTINE-LOAD
        • BROKER-LOAD
        • BACKUP
        • EXPORT
        • STREAM-LOAD
      • DDL
        • CREATE-FILE
        • DROP-RESOURCE
        • CREATE-RESOURCE
        • CREATE-MATERIALIZED-VIEW
        • DROP-RESROUCE
        • CREATE-TABLE
        • DROP-REPOSITORY
        • CREATE-REPOSITORY
        • CREATE-ODBC-TABLE
      • 信息查看语句
        • SHOW-BACKUP
        • SHOW-ALTER-TABLE-MATERIALIZED-VIEW
        • SHOW-SNAPSHOT
        • SHOW-ROUTINE-LOAD
        • SHOW-CREATE-ROUTINE-LOAD
        • SHOW-ROLES
        • SHOW-GRANTS
        • SHOW-EXPORT
        • SHOW-ROUTINE-LOAD-TASK
        • SHOW-REPOSITORIES
        • SHOW-LOAD
        • SHOW-RESOURCES
        • SHOW-RESTORE
        • SHOW-PROPERTY
        • SHOW-FILE
      • 辅助命令
        • PAUSE-ROUTINE-LOAD
        • STOP-ROUTINE-LOAD
        • ALTER-ROUTINE-LOAD
        • CANCEL-LOAD
        • RESUME-ROUTINE-LOAD
      • 账户管理
        • SET-PROPERTY
        • REVOKE
        • GRANT
        • CREATE-ROLE
        • DROP-ROLE
        • CREATE-USER
        • DROP-USER
        • SET-PASSWORD
  • 快速入门
    • 快速上手
    • 存算分离
    • 存算一体
  • 典型实践
    • 如何开启Debug日志
    • 导入分析
    • 查询分析
  • 操作手册
    • 权限和子用户
    • 存算一体
      • 连接集群
      • 查询分析
      • 监控告警
        • 监控指标
        • 告警配置
      • 备份恢复
        • 通过管理页面备份与恢复
        • 备份与恢复
      • 权限管理
        • 集群权限
        • 控制台权限
      • 集群管理
        • 集群创建
        • 停止与删除
        • 重置管理员密码
        • 集群扩缩容
        • 集群详情
    • 存算分离
      • 连接集群
      • 计算组管理
        • 重启计算组
        • 创建计算组
      • 监控告警
        • 监控指标
        • 告警配置
      • 权限管理
        • 集群权限
        • 控制台权限
      • 集群管理
        • 停止与删除
        • 创建集群
        • 重置管理员密码
        • 集群详情
  • 服务等级协议SLA
    • 服务等级协议(SLA)v1.0
  • 产品概述
    • 系统架构
    • 产品特点
    • 产品介绍
  • 视频专区
    • 操作指南
    • 产品简介
  • 产品定价
    • 预付费
    • 计费说明
    • 后付费
所有文档
menu
没有找到结果,请重新输入

数据仓库 PALO

  • 功能发布记录
  • 操作手册1
    • LDAP认证
    • 时区
    • 使用S3-SDK访问对象存储
    • 权限管理
    • 物化视图
    • 变量
    • 资源管理
    • 数据更新与删除
      • 标记删除
      • Sequence-Column
      • 数据更新
      • 数据删除
    • 备份与恢复
      • 备份与恢复
    • 数据导出1
      • SELECT INTO OUTFILE
      • MySQL Dump
      • 数据导出概述
      • Export
    • 数据导出
      • 全量数据导出
      • 导出查询结果集
      • 导出总览
      • 导出数据到外部表
    • 查询加速1
      • 查询缓存
      • 物化视图
        • 同步物化视图
        • 物化视图概览
        • 异步物化视图
          • 异步物化视图常见问题
          • 最佳实践
          • 异步物化视图概述
          • 创建、查询与维护异步物化视图
    • 数据导入
      • JSON格式数据导入说明
      • 导入本地数据
      • 导入BOS中的数据
      • 导入事务和原子性
      • 通过外部表同步数据
      • 使用JDBC同步数据
      • 列的映射、转换与过滤
      • 订阅Kafka日志
      • 严格模式
      • 导入总览
    • 数据更新与删除1
      • 事务
      • 数据更新
        • 主键模型的导入更新
        • 主键模型的 Update 更新
        • 数据更新概述
        • 主键模型的更新并发控制
        • 聚合模型的导入更新
      • 数据删除
        • 删除操作概述
        • Truncate 操作
        • 表原子替换
        • Delete 操作
        • 基于导入的批量删除
        • 临时分区
    • 数据导入1
      • 高并发导入优化(Group Commit)
      • 导入概览
      • 异常数据处理
      • 导入高可用性
      • 导入时实现数据转换
      • 数据源
        • Kafka
        • S3 兼容存储
        • 从其他 TP 系统迁移数据
        • HDFS
        • 从其他 AP 系统迁移数据
        • Flink
        • 本地文件
      • 导入方式
        • Broker Load
        • MySQL Load
        • Insert Into Values
        • Stream Load
        • Insert Into Select
        • Routine Load
      • 文件格式
        • CSV
        • JSON
        • Parquet
        • ORC
      • 复杂数据类型
        • MAP
        • Variant
        • JSON
        • STRUCT
        • Bitmap
        • HLL
        • ARRAY
  • 开发指南
    • 迁移ClickHouse数据
    • Doris集群间数据迁移
    • 数据更新与删除
      • 事务
      • 数据更新
        • 主键模型的导入更新
        • 主键模型的 Update 更新
        • 数据更新概述
        • 主键模型的更新并发控制
        • 聚合模型的导入更新
      • 数据删除
        • 删除操作概述
        • Truncate 操作
        • 表原子替换
        • Delete 操作
        • 基于导入的批量删除
        • 临时分区
    • 查询加速
      • 查询缓存
      • Colocation Join
      • 高并发点查
      • Hint
        • Hint 概述
        • Leading Hint
        • Distribute Hint
      • 物化视图
        • 同步物化视图
        • 物化视图概览
        • 异步物化视图
          • 异步物化视图常见问题
          • 最佳实践
          • 异步物化视图概述
          • 创建、查询与维护异步物化视图
      • 高效去重
        • BITMAP 精准去重
        • HLL 近似去重
      • 优化技术原理
        • TOPN 查询优化
        • 统计信息
        • Pipeline 执行引擎
        • 查询优化器介绍
        • Runtime Filter
      • 查询调优概述
        • 调优概述
        • 诊断工具
        • 分析工具
        • 调优流程
      • 查询优化实践
        • 常见调优参数
        • 计划调优
          • 使用 Hint 控制代价改写
          • 使用异步物化视图透明改写
          • 使用 Leading Hint 控制 Join 顺序
          • 优化表 Schema 设计
          • 使用分区裁剪优化扫表
          • 优化索引设计和使用
          • 使用 Hint 调整 Join Shuffle 方式
          • DML 计划调优
          • 使用 Colocate Group 优化 Join
          • 使用同步物化视图透明改写
          • 使用 SQL Cache 加速查询
        • 执行调优
          • 数据倾斜处理
          • RuntimeFilter 的等待时间调整
          • 并行度调优
    • 数据查询
      • 连接(JOIN)
      • 子查询
      • 复杂类型查询
      • 列转行 (Lateral View)
      • MySQL 兼容性
      • 聚合多维分析
      • 分析函数(窗口函数)
      • 公用表表达式(CTE)
      • 自定义函数
        • 别名函数
        • Java UDF, UDAF, UDTF
    • 数据导出
      • SELECT INTO OUTFILE
      • MySQL Dump
      • 最佳实践
      • 数据导出概述
      • Export
    • 数据导入
      • 高并发导入优化(Group Commit)
      • 异常数据处理
      • 导入高可用性
      • 导入时实现数据转换
      • 导入最佳实践
      • 数据源
        • Kafka
        • Snowflake
        • S3 兼容存储
        • Google Cloud Storage
        • 从其他 TP 系统迁移数据
        • Azure Storage
        • 腾讯云 COS
        • MinIO
        • HDFS
        • 阿里云 OSS
        • 华为云 OBS
        • 从其他 AP 系统迁移数据
        • Flink
        • Redshift
        • Amazon S3
        • 本地文件
        • BigQuery
      • 导入方式
        • Broker Load
        • MySQL Load
        • Insert Into Values
        • Stream Load
        • Insert Into Select
        • Routine Load
      • 文件格式
        • CSV
        • JSON
        • Parquet
        • ORC
      • 复杂数据类型
        • MAP
        • Variant
        • JSON
        • STRUCT
        • Bitmap
        • HLL
        • ARRAY
    • BI工具接入
      • Sugar
      • Navicat
      • Tableau
      • DBeaver
      • 永洪BI
      • FineBI(帆软)
    • 数据库连接
      • 通过 MySQL 协议连接
      • 基于 Arrow Flight SQL 的高速数据传输链路
    • 湖仓一体
      • 分析 S3或HDFS 上的文件
      • 湖仓一体概述
      • SQL 方言兼容
      • 弹性计算节点
      • 云服务认证接入
      • 元数据缓存
      • 外表统计信息
      • 数据缓存
      • 数据库分析
        • MySQL
        • JDBC Catalog
        • Oracle
        • OceanBase
        • SAP HANA
        • 阿里云 MaxCompute
        • ClickHouse
        • PostgreSQL
        • IBM Db2
        • SQL Server
        • Elasticsearch
      • 湖仓一体最佳实践
        • 使用 PALO 和 Paimon
        • 使用 PALO 和 Iceberg
        • 使用 PALO 和 Hudi
        • 使用 PALO 和 LakeSoul
      • 数据湖构建
        • Iceberg
        • Hive
      • 数据湖分析
        • Hudi Catalog
        • 阿里云 DLF
        • Iceberg Catalog
        • Paimon Catalog
        • Hive Catalog
    • 数据表设计
      • 行业混存
      • 数据压缩
      • Schema 变更
      • 数据类型
      • 自增列
      • 概览
      • 数据库建表最佳实践
      • 冷热数据分层
        • SSD 和 HDD 层级存储
        • 远程存储
        • 冷热数据分层概述
      • 表索引
        • 倒排索引
        • 前缀索引与排序键
        • N-Gram 索引
        • BloomFilter 索引
        • 索引概述
      • 数据划分
        • 数据分桶
        • 数据分布概念
        • 动态分区
        • 自动分区
        • 手动分区
        • 常见文档
      • 数据模型
        • 使用注意
        • 模型概述
        • 主键模型
        • 明细模型
        • 聚合模型
  • 版本发布历史
    • 百度数据仓库 Palo 2.0 版本全新发布
  • SQL手册
    • 字面常量
    • 别名
    • SQL-手册
    • 数据类型
    • SQL语句
    • 注释
    • 内置函数
    • 白名单管理
    • SQL操作符
    • 内置函数
      • 聚合函数
      • 位操作函数
      • 字符串函数
      • 条件函数
      • 数学函数
      • JSON解析函数
      • 类型转换函数
      • 格式转换函数
      • 通用函数
      • 时间和日期函数
      • BITMAP函数
      • 窗口函数
      • 哈希函数
      • HLL函数
    • 语法帮助
      • DML
        • INSERT
        • ROUTINE-LOAD
        • RESTORE
        • SELECT-INTO-OUTFILE
        • ALTER-ROUTINE-LOAD
        • BROKER-LOAD
        • BACKUP
        • EXPORT
        • STREAM-LOAD
      • DDL
        • CREATE-FILE
        • DROP-RESOURCE
        • CREATE-RESOURCE
        • CREATE-MATERIALIZED-VIEW
        • DROP-RESROUCE
        • CREATE-TABLE
        • DROP-REPOSITORY
        • CREATE-REPOSITORY
        • CREATE-ODBC-TABLE
      • 信息查看语句
        • SHOW-BACKUP
        • SHOW-ALTER-TABLE-MATERIALIZED-VIEW
        • SHOW-SNAPSHOT
        • SHOW-ROUTINE-LOAD
        • SHOW-CREATE-ROUTINE-LOAD
        • SHOW-ROLES
        • SHOW-GRANTS
        • SHOW-EXPORT
        • SHOW-ROUTINE-LOAD-TASK
        • SHOW-REPOSITORIES
        • SHOW-LOAD
        • SHOW-RESOURCES
        • SHOW-RESTORE
        • SHOW-PROPERTY
        • SHOW-FILE
      • 辅助命令
        • PAUSE-ROUTINE-LOAD
        • STOP-ROUTINE-LOAD
        • ALTER-ROUTINE-LOAD
        • CANCEL-LOAD
        • RESUME-ROUTINE-LOAD
      • 账户管理
        • SET-PROPERTY
        • REVOKE
        • GRANT
        • CREATE-ROLE
        • DROP-ROLE
        • CREATE-USER
        • DROP-USER
        • SET-PASSWORD
  • 快速入门
    • 快速上手
    • 存算分离
    • 存算一体
  • 典型实践
    • 如何开启Debug日志
    • 导入分析
    • 查询分析
  • 操作手册
    • 权限和子用户
    • 存算一体
      • 连接集群
      • 查询分析
      • 监控告警
        • 监控指标
        • 告警配置
      • 备份恢复
        • 通过管理页面备份与恢复
        • 备份与恢复
      • 权限管理
        • 集群权限
        • 控制台权限
      • 集群管理
        • 集群创建
        • 停止与删除
        • 重置管理员密码
        • 集群扩缩容
        • 集群详情
    • 存算分离
      • 连接集群
      • 计算组管理
        • 重启计算组
        • 创建计算组
      • 监控告警
        • 监控指标
        • 告警配置
      • 权限管理
        • 集群权限
        • 控制台权限
      • 集群管理
        • 停止与删除
        • 创建集群
        • 重置管理员密码
        • 集群详情
  • 服务等级协议SLA
    • 服务等级协议(SLA)v1.0
  • 产品概述
    • 系统架构
    • 产品特点
    • 产品介绍
  • 视频专区
    • 操作指南
    • 产品简介
  • 产品定价
    • 预付费
    • 计费说明
    • 后付费
  • 文档中心
  • arrow
  • 数据仓库PALO
  • arrow
  • 开发指南
  • arrow
  • 湖仓一体
  • arrow
  • 数据湖分析
  • arrow
  • Hive Catalog
本页目录
  • 使用须知
  • 创建 Catalog
  • Hive On HDFS
  • Hive On ViewFS
  • Hive On JuiceFS
  • PALO 访问腾讯云 DLC
  • Hive On S3
  • Hive On OSS
  • Hive On OSS-HDFS
  • Hive On OBS
  • Hive On COS
  • Hive With Glue
  • 元数据缓存与刷新
  • 订阅 Hive Metastore
  • Hive 版本
  • 列类型映射
  • 查询 Hive 分区
  • 使用 broker 访问 HMS
  • 集成 Apache Ranger
  • 环境配置
  • 最佳实践
  • 连接 Kerberos 认证的 Hive 集群
  • 环境准备
  • Catalog 配置
  • 多 Kerberos 集群配置
  • 问题排查
  • Hive Transactional 表
  • Hive Transactional 表支持情况
  • 当前限制
  • 最佳实践

Hive Catalog

更新时间:2025-08-21

通过连接 Hive Metastore,或者兼容 Hive Metatore 的元数据服务,PALO 可以自动获取 Hive 的库表信息,并进行数据查询。

除了 Hive 外,很多其他系统也会使用 Hive Metastore 存储元数据。所以通过 Hive Catalog,我们不仅能访问 Hive,也能访问使用 Hive Metastore 作为元数据存储的系统。如 Iceberg、Hudi 等。

使用须知

  1. 将 core-site.xml,hdfs-site.xml 和 hive-site.xml 放到 FE 和 BE 的 conf 目录下。优先读取 conf 目录下的 hadoop 配置文件,再读取环境变量 HADOOP_CONF_DIR 的相关配置文件。
  2. Hive 支持 1/2/3 版本。
  3. 支持 Managed Table 和 External Table,支持部分 Hive View。
  4. 可以识别 Hive Metastore 中存储的 Hive、Iceberg、Hudi 元数据。
  5. 如果 Hadoop 节点配置了 hostname,请确保添加对应的映射关系到 /etc/hosts 文件。

创建 Catalog

Hive On HDFS

SQL
1CREATE CATALOG hive PROPERTIES (
2    'type'='hms',
3    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
4    'hadoop.username' = 'hive'
5);

除了 type 和 hive.metastore.uris 两个必须参数外,还可以通过更多参数来传递连接所需要的信息。

这些参数大多来自于 hadoop 集群的 core-site.xml, hdfs-site.xml 和 hive-site.xml 配置文件中。

如提供 HDFS HA 信息,示例如下:

SQL
1CREATE CATALOG hive PROPERTIES (
2    'type'='hms',
3    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
4    'hadoop.username' = 'hive',
5    'dfs.nameservices'='your-nameservice',
6    'dfs.ha.namenodes.your-nameservice'='nn1,nn2',
7    'dfs.namenode.rpc-address.your-nameservice.nn1'='172.21.0.2:8088',
8    'dfs.namenode.rpc-address.your-nameservice.nn2'='172.21.0.3:8088',
9    'dfs.client.failover.proxy.provider.your-nameservice'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider'
10);

关于 Kerberos 相关配置,请参阅 连接 Kerberos 认证的 Hive 集群 一节。

Hive On ViewFS

SQL
1CREATE CATALOG hive PROPERTIES (
2    'type'='hms',
3    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
4    'hadoop.username' = 'hive',
5    'dfs.nameservices'='your-nameservice',
6    'dfs.ha.namenodes.your-nameservice'='nn1,nn2',
7    'dfs.namenode.rpc-address.your-nameservice.nn1'='172.21.0.2:8088',
8    'dfs.namenode.rpc-address.your-nameservice.nn2'='172.21.0.3:8088',
9    'dfs.client.failover.proxy.provider.your-nameservice'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider',
10    'fs.defaultFS' = 'viewfs://your-cluster',
11    'fs.viewfs.mounttable.your-cluster.link./ns1' = 'hdfs://your-nameservice/',
12    'fs.viewfs.mounttable.your-cluster.homedir' = '/ns1'
13);

ViewFS 相关参数可以如上面一样添加到 Catalog 配置中,也可以添加到 conf/core-site.xml 中。

Hive On JuiceFS

数据存储在 JuiceFS,示例如下:

(需要把 juicefs-hadoop-x.x.x.jar 放在 fe/lib/ 和 apache_hdfs_broker/lib/ 下)

SQL
1CREATE CATALOG hive PROPERTIES (
2    'type'='hms',
3    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
4    'hadoop.username' = 'root',
5    'fs.jfs.impl' = 'io.juicefs.JuiceFileSystem',
6    'fs.AbstractFileSystem.jfs.impl' = 'io.juicefs.JuiceFS',
7    'juicefs.meta' = 'xxx'
8);

PALO 访问腾讯云 DLC

注意: PALO 2.0.13 / 2.1.5 后支持该功能

腾讯云 DLC 采用 HMS 管理元数据,因此可用 Hive catalog 进行联邦分析。 DLC 可基于 lakefs 或 cosn 进行数据存储。以下 catalog 创建方法对两种 FS 都适用。

SQL
1CREATE CATALOG dlc PROPERTIES (
2    'type' = 'hms',
3    'hive.metastore.uris' = 'thrift://<dlc_metastore_ip>:<dlc_metastore_port>',
4    's3.access_key' = 'xxxxx',
5    's3.secret_key' = 'xxxxx',
6    's3.region' = 'ap-xxx',
7    's3.endpoint' = 'cos.ap-xxx.myqcloud.com',
8    'fs.cosn.bucket.region' = 'ap-xxx',
9    'fs.ofs.user.appid' = '<your_tencent_cloud_appid>',
10    'fs.ofs.tmp.cache.dir' = '<tmp_cache_dir>'
11);

创建完 catalog 后需要对 catalog 绑定的 appid 进行授权 。

Hive On S3

SQL
1CREATE CATALOG hive PROPERTIES (
2    "type"="hms",
3    "hive.metastore.uris" = "thrift://172.0.0.1:9083",
4    "s3.endpoint" = "s3.us-east-1.amazonaws.com",
5    "s3.region" = "us-east-1",
6    "s3.access_key" = "ak",
7    "s3.secret_key" = "sk",
8    "use_path_style" = "true"
9);

可选属性:

  • s3.connection.maximum:S3 最大连接数,默认 50
  • s3.connection.request.timeout:S3 请求超时时间,默认 3000ms
  • s3.connection.timeout:S3 连接超时时间,默认 1000ms

Hive On OSS

SQL
1CREATE CATALOG hive PROPERTIES (
2    "type"="hms",
3    "hive.metastore.uris" = "thrift://172.0.0.1:9083",
4    "oss.endpoint" = "oss.oss-cn-beijing.aliyuncs.com",
5    "oss.access_key" = "ak",
6    "oss.secret_key" = "sk"
7);

Hive On OSS-HDFS

首先,需要下载 Jindo SDK 然后将他们放置在 ${DORIS_HOME}/fe/lib 和 ${DORIS_HOME}/be/lib/java_extensions/preload-extensions,并重启 FE 和 BE。

Plain Text
1CREATE CATALOG hive PROPERTIES (
2    "type"="hms",
3    "hive.metastore.uris" = "thrift://172.0.0.1:9083",
4    "oss.endpoint" = "cn-beijing.oss-dls.aliyuncs.com",
5    "oss.access_key" = "ak",
6    "oss.secret_key" = "sk"
7);

注意 OSS-HDFS 的 endpoint 和 OSS 的 endpoint 不同。

Hive On OBS

SQL
1CREATE CATALOG hive PROPERTIES (
2    "type"="hms",
3    "hive.metastore.uris" = "thrift://172.0.0.1:9083",
4    "obs.endpoint" = "obs.cn-north-4.myhuaweicloud.com",
5    "obs.access_key" = "ak",
6    "obs.secret_key" = "sk"
7);

Hive On COS

SQL
1CREATE CATALOG hive PROPERTIES (
2    "type"="hms",
3    "hive.metastore.uris" = "thrift://172.0.0.1:9083",
4    "cos.endpoint" = "cos.ap-beijing.myqcloud.com",
5    "cos.access_key" = "ak",
6    "cos.secret_key" = "sk"
7);

Hive With Glue

连接 Glue 时,如果是在非 EC2 环境,需要将 EC2 环境里的 ~/.aws 目录拷贝到当前环境里。也可以下载 AWS Cli 工具进行配置,这种方式也会在当前用户目录下创建 .aws 目录。

SQL
1CREATE CATALOG hive PROPERTIES (
2    "type"="hms",
3    "hive.metastore.type" = "glue",
4    "glue.endpoint" = "https://glue.us-east-1.amazonaws.com",
5    "glue.access_key" = "ak",
6    "glue.secret_key" = "sk"
7);

元数据缓存与刷新

这里主要介绍,基于 Hive Metastore 元数据事件的自定元数据订阅

订阅 Hive Metastore

通过让 FE 节点定时读取 HMS 的 Notification Event 来感知 Hive 表元数据的变更情况,目前支持处理如下 Event:

事件 事件行为和对应的动作
CREATE DATABASE 在对应数据目录下创建数据库。
DROP DATABASE 在对应数据目录下删除数据库。
ALTER DATABASE 此事件的影响主要有更改数据库的属性信息,注释及默认存储位置等,这些改变不影响 PALO 对外部数据目录的查询操作,因此目前会忽略此 Event。
CREATE TABLE 在对应数据库下创建表。
DROP TABLE 在对应数据库下删除表,并失效表的缓存。
ALTER TABLE 如果是重命名,先删除旧名字的表,再用新名字创建表,否则失效该表的缓存。
ADD PARTITION 在对应表缓存的分区列表里添加分区。
DROP PARTITION 在对应表缓存的分区列表里删除分区,并失效该分区的缓存。
ALTER PARTITION 如果是重命名,先删除旧名字的分区,再用新名字创建分区,否则失效该分区的缓存。

当导入数据导致文件变更,分区表会走 ALTER PARTITION Event 逻辑,不分区表会走 ALTER TABLE Event 逻辑。

如果绕过 HMS 直接操作文件系统的话,HMS 不会生成对应事件,PALO 因此也无法感知

该特性在 fe.conf 中有如下参数:

  1. enable_hms_events_incremental_sync: 是否开启元数据自动增量同步功能,默认关闭。
  2. hms_events_polling_interval_ms: 读取 event 的间隔时间,默认值为 10000,单位:毫秒。
  3. hms_events_batch_size_per_rpc: 每次读取 event 的最大数量,默认值为 500。

如果想使用该特性 (华为 MRS 除外),需要更改 HMS 的 hive-site.xml 并重启 HMS 和 HiveServer2:

Plain Text
1<property>
2    <name>hive.metastore.event.db.notification.api.auth</name>
3    <value>false</value>
4</property>
5<property>
6    <name>hive.metastore.dml.events</name>
7    <value>true</value>
8</property>
9<property>
10    <name>hive.metastore.transactional.event.listeners</name>
11    <value>org.apache.hive.hcatalog.listener.DbNotificationListener</value>
12</property>

华为的 MRS 需要更改 hivemetastore-site.xml 并重启 HMS 和 HiveServer2:

Plain Text
1<property>
2    <name>metastore.transactional.event.listeners</name>
3    <value>org.apache.hive.hcatalog.listener.DbNotificationListener</value>
4</property>

Hive 版本

PALO 可以正确访问不同 Hive 版本中的 Hive Metastore。在默认情况下,PALO 会以 Hive 2.3 版本的兼容接口访问 Hive Metastore。

如在查询时遇到如 Invalid method name: 'get_table_req' 类似错误,说明 Hive 版本不匹配。

你可以在创建 Catalog 时指定 Hive 的版本。如访问 Hive 1.1.0 版本:

SQL
1CREATE CATALOG hive PROPERTIES (
2    'type'='hms',
3    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
4    'hive.version' = '1.1.0'
5);

列类型映射

适用于 Hive/Iceberge/Hudi

HMS Type PALO Type Comment
boolean boolean
tinyint tinyint
smallint smallint
int int
bigint bigint
date date
timestamp datetime
float float
double double
char char
varchar varchar
decimal decimal
array<type> array<type> 支持嵌套,如 array<map<string, int>>
map<KeyType, ValueType> map<KeyType, ValueType> 支持嵌套,如 map<string, array<int>>
struct<col1: Type1, col2: Type2, ...> struct<col1: Type1, col2: Type2, ...> 支持嵌套,如 struct<col1: array<int>, col2: map<int, date>>
other unsupported

注:是否按照 Hive 表的 Schema 来截断 char 或者 varchar 列

如果会话变量 truncate_char_or_varchar_columns 开启,则当 Hive 表的 Schema 中 char 或者 varchar 列的最大长度和底层 Parquet 或者 ORC 文件中的 schema 不一致时会按照 Hive 表列的最大长度进行截断。

该变量默认为 false。

查询 Hive 分区

可以通过下面两种方式查询 Hive 分区信息。

  • SHOW PARTITIONS FROM hive_table

    该语句可以列出指定 Hive 表的所有分区以及分区值信息。

  • 使用 table$partitions 元数据表

    自 2.1.7 和 3.0.3 版本开始,用户可以通过 table$partitions 元数据表查询 Hive 分区信息。table$partitions 本质上是一个关系表,所以可以使用在任意 SELECT 语句中。

    Plain Text
    1SELECT * FROM hive_table$partitions;

使用 broker 访问 HMS

创建 HMS Catalog 时增加如下配置,Hive 外表文件分片和文件扫描将会由名为 test_broker 的 Broker 完成

SQL
1"broker.name" = "test_broker"

PALO 基于 Iceberg FileIO 接口实现了 Broker 查询 HMS Catalog Iceberg 的支持。如有需求,可以在创建 HMS Catalog 时增加如下配置。

SQL
1"io-impl" = "org.apache.doris.datasource.iceberg.broker.IcebergBrokerIO"

集成 Apache Ranger

Apache Ranger 是一个用来在 Hadoop 平台上进行监控,启用服务,以及全方位数据安全访问管理的安全框架。

PALO 支持为指定的 External Hive Catalog 使用 Apache Ranger 进行鉴权。

目前支持 Ranger 的库、表、列的鉴权,暂不支持加密、行权限、Data Mask 等功能。

环境配置

连接开启 Ranger 权限校验的 Hive Metastore 需要增加配置 & 配置环境:

  1. 创建 Catalog 时增加:
SQL
1"access_controller.properties.ranger.service.name" = "hive",
2"access_controller.class" = "org.apache.doris.catalog.authorizer.ranger.hive.RangerHiveAccessControllerFactory",

注意:

access_controller.properties.ranger.service.name 指的是 service 的类型,例如 hive,hdfs 等。并不是配置文件中 ranger.plugin.hive.service.name 的值。

  1. 配置所有 FE 环境:

    1. 将 HMS conf 目录下的配置文件 ranger-hive-audit.xml, ranger-hive-security.xml, ranger-policymgr-ssl.xml 复制到 FE 的 conf 目录下。
    2. 修改 ranger-hive-security.xml 的属性,参考配置如下:

      SQL
      1<?xml version="1.0" encoding="UTF-8"?>
      2<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      3<configuration>
      4    #The directory for caching permission data, needs to be writable
      5    <property>
      6        <name>ranger.plugin.hive.policy.cache.dir</name>
      7        <value>/mnt/datadisk0/zhangdong/rangerdata</value>
      8    </property>
      9    #The time interval for periodically pulling permission data
      10    <property>
      11        <name>ranger.plugin.hive.policy.pollIntervalMs</name>
      12        <value>30000</value>
      13    </property>
      14
      15    <property>
      16        <name>ranger.plugin.hive.policy.rest.client.connection.timeoutMs</name>
      17        <value>60000</value>
      18    </property>
      19
      20    <property>
      21        <name>ranger.plugin.hive.policy.rest.client.read.timeoutMs</name>
      22        <value>60000</value>
      23    </property>
      24
      25    <property>
      26        <name>ranger.plugin.hive.policy.rest.ssl.config.file</name>
      27        <value></value>
      28    </property>
      29
      30    <property>
      31        <name>ranger.plugin.hive.policy.rest.url</name>
      32        <value>http://172.21.0.32:6080</value>
      33    </property>
      34
      35    <property>
      36        <name>ranger.plugin.hive.policy.source.impl</name>
      37        <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>
      38    </property>
      39
      40    <property>
      41        <name>ranger.plugin.hive.service.name</name>
      42        <value>hive</value>
      43    </property>
      44
      45    <property>
      46        <name>xasecure.hive.update.xapolicies.on.grant.revoke</name>
      47        <value>true</value>
      48    </property>
      49
      50</configuration>
    3. 为获取到 Ranger 鉴权本身的日志,可在 <doris_home>/conf 目录下添加配置文件 log4j.properties。
    4. 重启 FE。

最佳实践

  1. 在 Ranger 端创建用户 user1 并授权 db1.table1.col1 的查询权限
  2. 在 Ranger 端创建角色 role1 并授权 db1.table1.col2 的查询权限
  3. 在 PALO 创建同名用户 user1,user1 将直接拥有 db1.table1.col1 的查询权限
  4. 在 PALO 创建同名角色 role1,并将 role1 分配给 user1,user1 将同时拥有 db1.table1.col1 和 col2 的查询权限
  5. Admin 和 Root 用户的权限不受 Apache Ranger 的权限控制

连接 Kerberos 认证的 Hive 集群

本小节主要介绍如何连接开启 Kerberos 认证的 Hive + HDFS 集群。

环境准备

  • krb5.conf

krb5.conf 是 Kerberos 认证协议的配置文件。需将该文件部署在所有 FE 和 BE 节点上。并确保 PALO 集群可以和文件中记录的 KDC 服务连通。

默认情况下,该文件位于 Hadoop 集群的 /etc 目录下。但请联系 Hadoop 集群管理员获取正确的 krb5.conf 文件,并将其部署到所有 FE 和 BE 节点的 /etc 目录下。

注意,某些情况下,krb5.conf 的文件位置可能取决于环境变量 KRB5_CONFIG 或 JVM 参数中的 -Djava.security.krb5.conf 参数。请检查这些属性以确定 krb5.conf 的确切位置。

如需自定义krb5.conf的位置:

  • FE:在 fe.conf 配置 JVM 参数 -Djava.security.krb5.conf。
  • BE:在 be.conf 使用 kerberos_krb5_conf_path 配置项,默认值为/etc/krb5.conf。
  • JVM 参数

请在 FE 和 BE 的 JVM 参数中添加如下配置(位于 fe.conf 和 be.conf 中):

  • -Djavax.security.auth.useSubjectCredsOnly=false
  • -Dsun.security.krb5.debug=true

并重启 FE、BE 节点以确保其生效。

Catalog 配置

通常情况下,连接 Kerberos 认证的 Hive 集群,需要在 Catalog 中添加如下属性:

  • "hadoop.security.authentication" = "kerberos":开启 kerberos 认证方式。
  • "hadoop.kerberos.principal" = "your_principal":HDFS namenode 的 principal。通常是 hdfs-site.xml 的 dfs.namenode.kerberos.principal 配置。
  • "hadoop.kerberos.keytab" = "/path/to/your_keytab":HDFS namenode 的 keytab 文件。通常是 hdfs-site.xml 的 dfs.namenode.keytab.file 配置。注意,这个文件需要部署到所有 FE 和 BE 节点相同的目录下(可自定义)。
  • "yarn.resourcemanager.principal" = "your_principal":Yarn Resource Manager 的 principal,可以在 yarn-site.xml 中获取。
  • "hive.metastore.kerberos.principal" = "your_principal":Hive metastore 的 principal。可以再 hive-site.xml 中。

注:建议使用 kinit -kt your_principal /path/to/your_keytab 以及 klist -k /path/to/your_keytab 来

示例如下:

SQL
1CREATE CATALOG hive_krb PROPERTIES (
2    'type'='hms',
3    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
4    'hive.metastore.sasl.enabled' = 'true',
5    'hive.metastore.kerberos.principal' = 'your-hms-principal',
6    'hadoop.security.authentication' = 'kerberos',
7    'hadoop.kerberos.keytab' = '/your-keytab-filepath/your.keytab',   
8    'hadoop.kerberos.principal' = 'your-principal@YOUR.COM',
9    'yarn.resourcemanager.principal' = 'your-rm-principal'
10);
SQL
1CREATE CATALOG hive_krb_ha PROPERTIES (
2    'type'='hms',
3    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
4    'hive.metastore.sasl.enabled' = 'true',
5    'hive.metastore.kerberos.principal' = 'your-hms-principal',
6    'hadoop.security.authentication' = 'kerberos',
7    'hadoop.kerberos.keytab' = '/your-keytab-filepath/your.keytab',   
8    'hadoop.kerberos.principal' = 'your-principal@YOUR.COM',
9    'yarn.resourcemanager.principal' = 'your-rm-principal',
10    'dfs.nameservices'='your-nameservice',
11    'dfs.ha.namenodes.your-nameservice'='nn1,nn2',
12    'dfs.namenode.rpc-address.your-nameservice.nn1'='172.21.0.2:8088',
13    'dfs.namenode.rpc-address.your-nameservice.nn2'='172.21.0.3:8088',
14    'dfs.client.failover.proxy.provider.your-nameservice'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider'
15);

多 Kerberos 集群配置

如需同时访问多个启用了 Kerberos 的 Hadoop 集群,需要修改 krb5.conf 文件并且配置 hadoop.security.auth_to_local 属性,具体操作如下:

  1. 在 krb5.conf 文件配置 Realms

    配置多集群时,需要把多个 Realm 配置到一个 krb5.conf 里头,kdc 和 admin_server 也可以是域名。

    Properties
    1[realms]
    2REALM1.COM = {
    3  kdc = 172.21.16.8:88
    4  admin_server = 172.21.16.8
    5}
    6REALM2.COM = {
    7  kdc = kdc_hostname:88
    8  admin_server = kdc_hostname
    9}
  2. 在 krb5.conf 文件配置 domain_realm,

    查找 kdc 时使用 Principal 中的 domain_name 去找相对应的 Realm

    Properties
    1[libdefaults]
    2  dns_lookup_realm = true
    3  dns_lookup_kdc = true
    4[domain_realm]
    5  .your-host.example = REALM1.COM
    6  your-host.example = REALM1.COM
    7  .your-other-host.example = REALM2.COM
    8  your-other-host.example = REALM2.COM

    如果未正确配置,通常会在 PALO 的 log/be.out 或者 log/fe.out 看到两种与 domain_realm 有关的错误:

    • Unable to locate KDC for realm / Cannot locate KDC
    • No service creds
  3. 配置 Domain 到 Realm 的映射

    为了在多集群环境下,能匹配到不同 Kerberos 服用用到的的 Principal,推荐 core-site.xml 添加或修改如下配置:

    XML
    1<property>
    2    <name>hadoop.security.auth_to_local</name>
    3    <value>RULE:[1:$1@$0](^.*@.*$)s/^(.*)@.*$/$1/g
    4           RULE:[2:$1@$0](^.*@.*$)s/^(.*)@.*$/$1/g
    5           DEFAULT</value>
    6</property>

    如果需要在 Catalog 中单独生效,可以直接配置在 Properties 中:

    SQL
    1CREATE CATALOG hive_krb PROPERTIES (
    2    'type'='hms',
    3    'hive.metastore.uris' = 'thrift://172.0.0.1:9083',
    4    'hive.metastore.sasl.enabled' = 'true',
    5    'hive.metastore.kerberos.principal' = 'your-other-hms-principal',
    6    'hadoop.security.authentication' = 'kerberos',
    7    'hadoop.kerberos.keytab' = '/your-other-keytab-filepath/your-other.keytab',   
    8    'hadoop.kerberos.principal' = 'your-other-principal@YOUR.COM',
    9    'yarn.resourcemanager.principal' = 'your-other-rm-principal',
    10    'hadoop.security.auth_to_local' = 'RULE:[1:$1@$0](^.*@.*$)s/^(.*)@.*$/$1/g
    11                                   RULE:[2:$1@$0](^.*@.*$)s/^(.*)@.*$/$1/g
    12                                   DEFAULT'
    13);
  4. 重启 PALO 服务

    检验映射规则是否能正确匹配,只要看访问不同集群时是否出现错误:NoMatchingRule: No rules applied to user/domain_name@REALM.COM

问题排查

如遇 Kerberos 认证问题,在设置了 JVM 参数 -Dsun.security.krb5.debug=true 后,会在 fe.out 或 be.out 中打印 Kerberos 认证相关信息。

Hive Transactional 表

Hive Transactional 表是 Hive 中支持 ACID 语义的表。

Hive Transactional 表支持情况

表类型 在 Hive 中支持的操作 Hive 表属性 支持的 Hive 版本
Full-ACID Transactional Table 支持 Insert, Update, Delete 操作 'transactional'='true', 'transactional_properties'='insert_only' 3.x,2.x,其中 2.x 需要在 Hive 中执行完 Major Compaction 才可以加载
Insert-Only Transactional Table 只支持 Insert 操作 'transactional'='true' 3.x,2.x

当前限制

目前不支持 Original Files 的场景。 当一个表转换成 Transactional 表之后,后续新写的数据文件会使用 Hive Transactional 表的 Schema,但是已经存在的数据文件是不会转化成 Transactional 表的 Schema,这样的文件称为 Original Files。

最佳实践

  • Hive Text 格式表的中空行行为的处理

    默认情况下,PALO 会忽略 Text 格式表中的空行。从 2.1.5 版本开始,可以通过设置会话变量 read_csv_empty_line_as_null 来控制该行为。

    set read_csv_empty_line_as_null = true;

    该变量默认为 false,表示忽略空行。如果设置为 true,这空行会读取为“所有列都是 null”的行并返回,这种行为和部分 Hadoop 生态中查询引擎的行为一致。

上一篇
Paimon Catalog
下一篇
数据表设计