本文档介绍如何在 ByteHouse CDW 中通过外表访问 LAS Catalog 上的数据,实现数据无需导入 ByteHouse,并利用 ByteHouse 的数仓加速能力来提升数据处理效率。
确保您执行外表操作的火山引擎账号已获得以下权限:
LAS Catalog 数据组织结构是以 Catalog / Database / Table 为层次3层数据结构,以如下结构为例:
catalog: benchmark database: ssb100parquet table: lineorder_flat
这表示数据存储在 benchmark catalog 的 ssb100parquet 数据库下的 lineorder_flat 表中。
以下示例将在 ByteHouse 中的 ext 数据库中创建表 las,并将该表映射到 LAS 中 benchmark catalog 的表 ssb100parquet.lineorder_flat。您可在ByteHouse 执行以下 SQL 命令创建外表。
CREATE DATABASE IF NOT EXISTS ext CREATE TABLE ext.las ENGINE = CnchHive('thrift://lakeformation.las.{REGION}.ivolces.com:48869', 'ssb100parquet', 'lineorder_flat') SETTINGS meta_type = 'lf', lf_metastore_catalog = 'benchmark', lf_metastore_region = '{REGION}', lf_metastore_ak_id = 'AKLTMjNkMDRlMXXXXXXXXXXWUzZ******', lf_metastore_ak_secret='WVXXXXXXXXXXXXXXXXXX******', lf_metastore_url = 'thrift://lakeformation.las.{REGION}.ivolces.com:48869', endpoint = 'tos-s3-{REGION}.ivolces.com', ak_id = 'AKLTMjNkMDRlMXXXXXXXXXXWUz******', ak_secret='WVXXXXXXXXXXXXXXXXXX******';
参数说明如下:
thrift://lakeformation.las.{REGION}.ivolces.com:48869:指定 LAS 所在可用地域的连接地址,您可根据您使用的地域,参考以下内容进行修改参考:
region | lf_metastore_url |
|---|---|
cn-beijing | thrift://lakeformation.las.cn-beijing.ivolces.com:48869 |
cn-shanghai | thrift://lakeformation.las.cn-shanghai.ivolces.com:48869 |
cn-guangzhou | thrift://lakeformation.las.cn-guangzhou.ivolces.com:48869 |
ssb100parquet、lineorder_flat: 表示创建的外表映射到 LAS 中的 ssb100parquet.lineorder_flat 表。在使用时,您可将该库表名替换为实际的库表名。
meta_type :固定为 lf,标识创建的外表是映射到 LAS 的 Catalog 中。
lf_metastore_catalog = 'benchmark':表示创建的外表映射到 LAS 中名为 benchmark 的 catalog。在使用时,您可将该 catalog 名替换为实际名称。您可登录 LAS 控制台,在左侧导航栏中,单击数据库 > 元数据管理,查看 Catalog 名称。
LAS 的认证参数:填写您使用 LAS 服务所在的地域、Access Key ID 以及 Secret Access Key 信息,用来访问 LAS 中表的元信息。获取方式如下:
lf_metastore_region:可参考 thrift://lakeformation.las.{REGION}.ivolces.com:48869 表格中的 region 信息填写。lf_metastore_ak_id、lf_metastore_ak_secret:配置为 LAS 的 Access Key ID 及 Secret Access Key,获取方式请参见 AccessKey(密钥)管理。lf_metastore_region = '{REGION}', lf_metastore_ak_id = 'AKLTMjNkMDRlMXXXXXXXXXXdkYzM4OWUzZD******', lf_metastore_ak_secret='USDCWEDSDCSXXXXXXXXXXXXXD******',
LAS 使用的数据存储 TOS 信息:填写 LAS 使用的 TOS 账号的endpoint、Access Key ID 以及 Secret Access Key,用于访问 TOS 中表的实际存储数据。获取方式及示例如下:
endpoint = 'tos-s3-{REGION}.ivolces.com', ak_id = 'AKLTMjNkMDRlMXXXXXXXXXXdkYzM4OWUzZD******', ak_secret='USDCWEDSDCSXXXXXXXXXXXXX******',
在 ByteHouse 中执行查看表的列信息:
DESCRIBE TABLE ext.las
CREATE EXTERNAL CATALOG `las_catalog` PROPERTIES aws.s3.endpoint='tos-s3-{REGION}.ivolces.com', aws.s3.access_key='AKLTMjNkMDRlMXXXXXXXXXXWUzZ******', aws.s3.secret_key='WVXXXXXXXXXXXXXXXXXX******', lf_metastore_ak_id='AKLTMjNkMDRlMXXXXXXXXXXWUzZ******', lf_metastore_ak_secret='WVXXXXXXXXXXXXXXXXXX******', lf_metastore_catalog='benchmark', lf_metastore_region='{REGION}', lf_metastore_url = 'thrift://lakeformation.las.{REGION}.ivolces.com:48869', type='lf';
参数说明如下:
aws.s3.endpoint:配置为 LF 使用的 TOS 服务 endpoint。可使用的服务端点列表请参见地域与访问域名(Endpoint)中 S3 Endpoint 列的信息。aws.s3.access_key、aws.s3.secret_key:配置为 LF 使用的 TOS 服务的 Access Key ID 及 Secret Access Key。获取方式请参见 AccessKey(密钥)管理。lf_metastore_ak_id、lf_metastore_ak_secret:配置为 LasFormation 的 Access Key ID 及 Secret Access Key,获取方式请参见 AccessKey(密钥)管理。lf_metastore_region:修改为地域信息,可参见配置外表中 LAS 连接地址说明中的 region 信息填写。lf_metastore_url:修改为 LAS 的 endpoint 地址,填写格式为 thrift://lf_thrift_server_ip:port,获取方式请参见配置外表中 LAS 连接地址说明。lf_metastore_catalog:表示创建的外表映射到 LAS 中名为 benchmark 的 catalog。在使用时,您可将该 catalog 名替换为实际名称。您可登录 LAS 控制台,在左侧导航栏中,单击数据库 > 元数据管理,查看 Catalog 名称。访问 LAS 中的表
您可以通过 catalog_name.db_name.table_name 这种三段式命名方式直接访问 LAS 中的表,示例如下:
select count() from las_catalog.ssb100parquet.lineorder_flat
列出 LAS Catalog 中的数据库名
show databases from las_catalog
列出数据库中的表名
show tables from las_catalog.ssb100parquet
获取表的创建语句
show create table las_catalog.ssb100parquet.lineorder_flat
写入数据
创建完成 Catalog 后,可向 LasFormation 表中写入数据,写入示例如下:
注意
写入 LasFormation 表前请确认:
insert into/overwrite las_catalog values (xxx); insert into/overwrite las_catalog select * from xxx settings enable_optimizer =1;