创建Hive External Catalog
创建Hive External Catalog 的步骤
创建存储连接 :首先需要创建一个存储连接,用于访问对象存储服务。
创建 Catalog Connection :使用存储连接信息和 Hive Metastore 地址创建 Catalog Connection。
创建External Catalog:使用 Catalog Connection 创建外部 Catalog,以便在数据湖中访问外部数据。
语法
CREATE EXTERNAL CATALOG catalog_name
CONNECTION catalog_api_connection;
参数说明
catalog_api_connection:catalog connection名称。目前只支持HIVE。参考创建catalog conneciton
案例
案例一:Hive ON OSS(支持读取和写入 )
CREATE STORAGE CONNECTION if not exists catalog_storage_oss
type OSS
ACCESS_ID='LTAIxxxxxxxxxxxx'
ACCESS_KEY='T8Gexxxxxxmtxxxxxx'
ENDPOINT='oss-cn-hangzhou-internal.aliyuncs.com';
创建 Catalog Connection
请确保和HMS所在服务器网络和Lakehouse打通。具体打通方式可以参考创建阿里云终端节点服务
CREATE CATALOG CONNECTION if not exists catalog_api_connection
type hms
hive_metastore_uris='xxxx:9083'
storage_connection='catalog_storage_oss';
CREATE EXTERNAL CATALOG my_external_catalog
CONNECTION catalog_api_connection;
--验证读取元数据
SHOW SCHEMAS IN my_external_catalog;
+---------------------------------------------------------------------------+
| schema_name |
+---------------------------------------------------------------------------+
| air_travel |
| all_data |
| automobile |
| automv_schema |
| bigquant |
+---------------------------------------------------------------------------+
--验证读取数据,读取数据时会使用STORAGE CONNECTION权限读取
SELECT * FROM my_external_catalog.my_schema.my_table;
案例二:Hive ON COS(支持读取和写入 )
CREATE STORAGE CONNECTION catalog_storage_cos
TYPE COS
ACCESS_KEY = '<access_key>'
SECRET_KEY = '<secret_key>'
REGION = 'ap-shanghai'
APP_ID = '1310000503';
参数 :
* TYPE :为对象存储类型,腾讯云应填写 COS
(大小写不限)
* ACCESS_KEY / SECRET_KEY :为腾讯云的访问密钥,获取方式参考:访问密钥
* REGION :指腾讯云对象存储 COS 的数据中心所在的地域。相同地域内云器Lakehouse访问腾讯云COS时,COS服务将自动路由至内网访问。具体取值请参考腾讯云文档:地域和访问域名 。
创建 Catalog Connection
请确保和HMS所在服务器网络和Lakehouse打通。具体打通方式可以参考创建腾讯云终端节点服务
CREATE CATALOG CONNECTION if not exists catalog_api_connection
type hms
hive_metastore_uris='xxxx:9083'
storage_connection='catalog_storage_cos';
CREATE CATALOG CONNECTION if not exists catalog_api_connection
type hms
hive_metastore_uris='xxxx:9083'
storage_connection='catalog_storage_oss';
CREATE EXTERNAL CATALOG my_external_catalog
CONNECTION catalog_api_connection;
--验证读取元数据
SHOW SCHEMAS IN my_external_catalog;
+---------------------------------------------------------------------------+
| schema_name |
+---------------------------------------------------------------------------+
| air_travel |
| all_data |
| automobile |
| automv_schema |
| bigquant |
+---------------------------------------------------------------------------+
--验证读取数据,读取数据时会使用STORAGE CONNECTION权限读取
SELECT * FROM my_external_catalog.my_schema.my_table;
案例三:Hive ON S3 (支持读取和写入 )
CREATE STORAGE CONNECTION catalog_storage_s3
TYPE S3
ACCESS_KEY = 'AKIAQNBSBP6EIJE33***'
SECRET_KEY = '7kfheDrmq***************************'
ENDPOINT = 's3.cn-north-1.amazonaws.com.cn'
REGION = 'cn-north-1';
参数 :
TYPE:为对象存储类型,AWS 应填写 S3(大小写不限)
ACCESS_KEY / SECRET_KEY:为AWS 的访问密钥,获取方式参考:访问密钥
ENDPOINT: S3 的服务地址,AWS 中国区分为北京区和宁夏区,北京区的S3 的服务地址为 s3.cn-north-1.amazonaws.com.cn
, 宁夏区 s3.cn-northwest-1.amazonaws.com.cn
,可参考:中国区终端节点 分别找到北京区域和宁夏区域的终端节点 -> Amazon S3 对应的终端节点
REGION:AWS 中国区分为北京区和宁夏区,区域值为:北京区 cn-north-1
, 宁夏区 cn-northwest-1
,可参考:中国区终端节点
创建 Catalog Connection
CREATE CATALOG CONNECTION if not exists catalog_api_connection
type hms
hive_metastore_uris='xxxx:9083'
storage_connection='catalog_storage_s3';
CREATE EXTERNAL CATALOG my_external_catalog
CONNECTION catalog_api_connection;
--验证读取元数据
SHOW SCHEMAS IN my_external_catalog;
+---------------------------------------------------------------------------+
| schema_name |
+---------------------------------------------------------------------------+
| air_travel |
| all_data |
| automobile |
| automv_schema |
| bigquant |
+---------------------------------------------------------------------------+
--验证读取数据,读取数据时会使用STORAGE CONNECTION权限读取
SELECT * FROM my_external_catalog.my_schema.my_table;
案例四:Hive ON HDFS(支持读取 )
CREATE CATALOG CONNECTION if not exists catalog_api_connection
type hms
hive_metastore_uris='xxxx:9083'
storage_connection='hdfs_conn';
CREATE EXTERNAL CATALOG my_external_catalog
CONNECTION catalog_api_connection;
--验证读取元数据
SHOW SCHEMAS IN my_external_catalog;
--验证读取数据,读取数据时会使用STORAGE CONNECTION权限读取
SELECT * FROM my_external_catalog.my_schema.my_table;
Lakehouse 支持通过 Kerberos 认证连接到启用了安全认证的 Hive Metastore 和 HDFS 集群。
Step0:前置条件:
Kerberos 环境 :确保您的 Hive Metastore 和 HDFS 集群已启用 Kerberos 认证
认证文件 :准备以下必需的 Kerberos 认证文件:
网络连通性 :确保 ClickZetta 可以访问 Kerberos KDC 和 Hive Metastore 服务
Step1:通过客户端工具 将 Kerberos 配置文件和 keytab 文件上传到 Volume 中:
-- upload krb5.conf
PUT '/etc/krb5.conf' TO USER VOLUME FILE 'krb5.conf';
-- upload keytab
PUT '/path/to/hive.keytab' TO USER VOLUME FILE 'hive.keytab';
Step2:使用以下语法创建支持 Kerberos 认证的 catalog connection:
CREATE CATALOG CONNECTION conn_hms_kerberos_auth
TYPE HMS
AUTH_TYPE = 'kerberos'
KERBEROS_CLIENT_PRINCIPAL = 'hive/localhost@YOUR-REALM.COM'
KERBEROS_SERVICE_PRINCIPAL = 'hive/localhost@YOUR-REALM.COM'
KERBEROS_KRB5_CONFIG_PATH = 'volume://vol_kerberos_secret/krb5.conf'
KERBEROS_KEYTAB_PATH = 'volume://vol_kerberos_secret/hive.keytab'
HIVE_METASTORE_URIS = 'thrift://your-hms-host:9083'
STORAGE_CONNECTION = 'oss_conn_hz';
参数名称 必需 描述 示例 AUTH_TYPE 是 认证类型,设置为 'kerberos' kerberos' KERBEROS_CLIENT_PRINCIPAL 是 Kerberos 客户端主体 'hive/localhost@CZ.COM' KERBEROS_SERVICE_PRINCIPAL 是 Kerberos 服务主体 'hive/localhost@CZ.COM' KERBEROS_KRB5_CONFIG_PATH 是 krb5.conf 文件路径 'volume://vol_name/krb5.conf' KERBEROS_KEYTAB_PATH 是 keytab 文件路径 'volume://vol_name/hive.keytab'
连接参数:
TYPE:
是连接类型,设置为 HMS
HIVE_METASTORE_URIS:
是Hive Metastore 服务地址 'thrift://host:9083'
STORAGE_CONNECTION:
关联的存储连接名称 'your_storage_conn'
Step3:基于 Kerberos 认证的 catalog connection 创建外部 schema
CREATE EXTERNAL SCHEMA ext_kerberos_hms_sch
CONNECTION conn_hms_kerberos_auth
OPTIONS ('schema'='default');
创建Databricks External Catalog
创建Databricks External Catalog 的步骤
创建 Catalog Connection :存储 Databricks的Unity Catalog,连接认证信息。
创建External Catalog:使用 Catalog Connection 创建外部 Catalog,以便在数据湖中访问外部数据。
语法
CREATE EXTERNAL CATALOG catalog_name
CONNECTION catalog_api_connection;
OPTIONS ('catalog'='catalog_name');
参数说明
catalog_name :外部 Catalog 的名称。该名称用于标识 Catalog,需唯一且符合命名规范。
catalog_api_connection :指定与外部 Catalog 的连接。catalog_api_connection
是预先创建的连接名称,用于访问外部 Catalog。
OPTIONS :指定外部 Catalog 的配置选。'catalog'='catalog_name'
:表示外部 Catalog 的名称,catalog_name
是目标 Catalog 的名称。