本文档介绍如何在 ByteHouse 中通过 外表 访问 LAS Catalog上的数据,实现数据无需导入 ByteHouse,并利用 ByteHouse 的数仓加速能力来提升数据处理效率。
确保进行外表操作的火山引擎账号已获得以下权限:
LAS Catalog 数据组织结构是以 Catalog / Database / Table 为层次3层数据结构,例如:
catalog: benchmark database: ssb100parquet table: lineorder_flat
这意味着数据存储在 benchmark catalog 的 ssb100parquet database 下的 lineorder_flat 表中。
以下以在ByteHouse中的 ext 数据库中创建 las 表,并将其映射到 LAS 中benchmark catalog的 ssb100parquet.lineorder_flat表作为示例,在ByteHouse执行以下SQL命令创建外表。
CREATE DATABASE IF NOT EXITS ext CREATE TABLE ext.las ENGINE = CnchHive('thrift://lakeformation.las.cn-beijing.ivolces.com:48869', 'ssb100parquet', 'lineorder_flat') SETTINGS meta_type = 'lf', lf_metastore_catalog = 'benchmark', lf_metastore_region = 'cn-beijing', lf_metastore_ak_id = 'AKLTMjNkMDRlMXXXXXXXXXXWUzZ******', lf_metastore_ak_secret='WVXXXXXXXXXXXXXXXXXX******', lf_metastore_url = 'thrift://lakeformation.las.cn-beijing.ivolces.com:48869', endpoint = 'tos-s3-cn-beijing.ivolces.com', ak_id = 'AKLTMjNkMDRlMXXXXXXXXXXWUz******', ak_secret='WVXXXXXXXXXXXXXXXXXX******';
其中:
thrift://lakeformation.las.cn-beijing.ivolces.com:48869
:指定LAS在北京地域的连接地址,其他地域可参考以下内容进行修改参考:
region | endpoint |
---|---|
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。
LAS的认证参数:
lf_metastore_region = 'cn-beijing', lf_metastore_ak_id = 'AKLTMjNkMDRlMXXXXXXXXXXdkYzM4OWUzZD******', lf_metastore_ak_secret='USDCWEDSDCSXXXXXXXXXXXXXD******',
用户的access_key以及secret_key信息,用来访问LAS中表的元信息
LAS的数据存储TOS信息:
endpoint = 'tos-s3-cn-beijing.ivolces.com', ak_id = 'AKLTMjNkMDRlMXXXXXXXXXXdkYzM4OWUzZD******', ak_secret='USDCWEDSDCSXXXXXXXXXXXXX******',
用户的access_key以及secret_key信息,用来访问TOS中表的实际存储数据
在ByteHouse中执行查看表的列信息
DESCRIBE TABLE ext.las
CREATE EXTERNAL CATALOG `las_catalog` PROPERTIES aws.s3.endpoint='tos-s3-cn-beijing.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='cn-beijing', lf_metastore_url = 'thrift://lakeformation.las.cn-beijing.ivolces.com:48869', type='lf';
具体参数含义和上文LAS外表类似。
用户可以通过 catalog_name.db_name.table_name
这种三段式命名方式直接访问Hive中的表,比如
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
写入数据
注意
目前不支持向未开通的 HNS 的 TOS Bucket 写入数据,更多关于TOS Bucket的HNS的介绍请参见TOS帮助文档。
insert into/overwrite las_catalog values (xxx); insert into/overwrite las_catalog select * from xxx settings enable_optimizer =1;