You need to enable JavaScript to run this app.
导航
Hive Catalog
最近更新时间:2024.11.06 13:58:49首次发布时间:2024.11.06 13:58:49

Bytehouse CDW 除了支持使用外表访问Hive数据以外,也支持通过External Catalog 方式访问。

创建 Hive Catalog

数据在s3使用

create external catalog hive_s3
properties
  type='hive',
  hive.metastore.uri = 'thrift://hive_thrift_server_ip:port',
  aws.s3.region= 's3_region',
  aws.s3.endpoint = 's3_endpoint',
  aws.s3.access_key = 's3_ak',
  aws.s3.secret_key = 's3_sk'

数据在hdfs使用

create external catalog hive_hdfs
properties
    type='hive',
    hive.metastore.uri = 'thrift://hive_thrift_server_ip:port',

需要注意, 对于存储在HDFS上的Hive外表, 我们只支持读配置在 cnch-config.yaml 中的HDFS的数据.

创建 Glue Catalog

我们也试验性的支持了AWS Glue Datacatalog.

create external catalog glue_s3
properties
type='glue',
    aws.glue.endpoint = 'glue_endpoint',
    aws.glue.region='glue_region',
    aws.glue.catalog_id='glue_catalog_id',
    aws.glue.access_key = 'glue_ak',
    aws.glue.secret_key = 'glue_sk',
    aws.s3.region= 's3_region',
    aws.s3.endpoint = 's3_endpoint',
    aws.s3.access_key =   's3_ak',
    aws.s3.secret_key =   's3_sk'

这里的glue_catalog_id是一个12位数字的AWS账号名,具体可以参考Aws Account ID Doc.

删除 External Catalog

用户可以如下删除External Catalog

drop external catalog your_catalog_name;

基本使用

假设用户已经创建好了一个名叫hive_s3的External Catalog

三段式命名

用户可以通过 catalog_name.db_name.table_name 这种三段式命名方式直接访问Hive中的表, 比如

select * from hive_s3.hive_db_name.hive_table_name;

ByteHouse 原生的 CnchMergeTree 表 也可以用如下SQL 访问

select * from cnch.cnch_db_name.cnch_db_name;
    -- this is equivalent to select * from  cnch_db_name.cnch_db_name; 

cnch (cloud-native-clickhouse的缩写) 被用作了Bytehouse CDW 默认Catalog的名字。

跨Catalog查询

利用External Catalog,用户可以直接将Hive 外表和Cnch的CnchMergeTree表做join

select * from hive_s3.hive_db.hive_table union all select (1) from cnch.cnch_db.cnch_table;

Show Databases and Tables

列出Catalog 中的数据库名

show databases [from hive_catalog]

列出数据库中的表名

show tables from [hive_catalog.][database]

获取表的创建语句

show create table [hive_catalog.][database.][table]

请注意, 外表的show create table 结果类似下面

CREATE TABLE hive_catalog$$hive_db_name.hive_table_name UUID 'some-uuid' (--field list -- cc_call_center_sk Nullable(Int64), cc_call_center_id Nullable(String))) ENGINE = CnchHive(hive_catalog, hive_db_name, hive_table_name) PARTITION BY tuple() SETTINGS endpoint = 'hive_endpoint', ak_id = 's3_ak', ak_secret = 's3_sk', region = 's3_region'

Switch Catalog

用户可以使用如下SQL来改变默认的Catalog

switch catalog hive_s3;

此时再运行

select * from tpcds.call_center;

Bytehouse CDW 就会从Hive中的tpcds数据库的call_center表读取数据 要切换会默认的Catalog,用户可以使用:

switch catalog cnch;

用户也可以使用:

use hive_s3.tpcds

直接将默认的数据库改到Hive的tpcds数据库。 为了切换会 Bytehouse CDW 内表, 直接使用:

use cnch.cnch_database_name