You need to enable JavaScript to run this app.
导航
最佳实践:集成LAS Catalog数据
最近更新时间:2025.04.01 17:15:14首次发布时间:2025.04.01 17:07:47
我的收藏
有用
有用
无用
无用

本文档介绍如何在 ByteHouse 中通过 外表 访问 LAS Catalog上的数据,实现数据无需导入 ByteHouse,并利用 ByteHouse 的数仓加速能力来提升数据处理效率。

前提条件

确保进行外表操作的火山引擎账号已获得以下权限:

  • 访问LAS的Catalog,以及库表级别读写权限。
  • 向LAS中写入数据时,还需拥有 TOS 访问权限、TOS 开通HNS(分层桶) 功能。

Image

背景信息

LAS Catalog 数据组织结构是以 Catalog / Database / Table 为层次3层数据结构,例如:

catalog: benchmark
database: ssb100parquet
table: lineorder_flat

这意味着数据存储在 benchmark catalog 的 ssb100parquet database 下的 lineorder_flat 表中。
Image

在ByteHouse 配置LAS 外表

配置外表

以下以在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

在ByteHouse 配置LAS Catalog

配置Catalog

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;