You need to enable JavaScript to run this app.
导航
开发指南
最近更新时间:2024.09.30 16:28:33首次发布时间:2024.06.11 17:08:27

1 能力介绍

湖仓构建(Lakehouse Analysis Service-Formation,LAS-Formation)作为湖仓一体的核心组成部分,提供了统一的元数据构建及企业级的数据权限控制能力,支持无缝接入包括 Hive、Spark 在内的多种计算引擎,旨在帮助用户聚焦自身业务,加速释放数据价值。

2 基本使用

2.1 使用前提

已开通 LAS,并准备好 TOS 存储。

2.2 配置数据目录

  • 登陆 LAS 控制台,点击左侧元数据,选择数据目录(catalog)。
  • 系统为用户提供了默认数据目录,这里只需要对该数据目录存储位置进行配置即可。
  • 完成数据目录配置之后,可以在控制台看到对应详情。

2.3 操作数据库表

您目前可以通过 LAS SDK 对数据库、数据表进行操作,详细配置见 SDK 页面。
配置客户端

public HiveMetaStoreClient createClient() {
    // 访问账号的 ak sk
    String ak = getAk();
    String sk = getSk();
    HiveConf conf = new HiveConf();
    //仅支持火山内部访问
    conf.set(HiveConf.ConfVars.METASTOREURIS.varname, "thrift://lakeformation.las.cn-beijing.ivolces.com:48869");
    HiveMetaStoreClient client = new HiveMetaStoreClient(conf);
    client.setRegion("cn-beijing");
    client.setAccessKeyIdAndSecretAccessKey(ak, sk);
}

2.3.1 创建数据库

通过 SDK 创建数据库 test_database

public void createDatabase(HiveMetaStoreClient client) throws TException {
    Database database = new Database();
    database.setName("test_database");
    //默认自动为 catalog 存储位置 + db name 的形式
    database.setLocationUri("TOS://bucket/warehouse/test_db.db");
    database.setDescription("test database description");
    client.createDatabase(database);
}

完成数据库创建后,在控制台界面上可见。

2.3.2 创建数据表

public void createTable(HiveMetaStoreClient client) throws TException {
    Table table = new Table();
    table.setDbName("test_database");
    table.setTableName("test_table");
    StorageDescriptor sd = new StorageDescriptor();
    //可不填,默认会以 db location uri + table name 的形式配置
    sd.setLocation("TOS://bucket/warehouse/test_db.db/test_table");
    List<FieldSchema> columns = new ArrayList<>();
    columns.add(new FieldSchema("id", "BIGINT", "主键"));
    columns.add(new FieldSchema("name", "STRING", "名字"));
    columns.add(new FieldSchema("age", "INT", "年龄"));
    sd.setCols(columns);
    table.setSd(sd);
    // 设置分区列,非分区表可以不配置
    List<FieldSchema> partitionKeys = new ArrayList<>();
    partitionKeys.add(new FieldSchema("ds", "STRING", "日期"));
    table.setPartitionKeys(partitionKeys);
    // 表高级配置
    Map<String, String> tableParams = new HashMap<>();
    tableParams.put("comment", "test table description");
    hiveMetaStoreClient.createTable(table);
}

完成数据表创建后,在控制台界面上可见。

2.3.3 删除数据库

public void dropDatabase(HiveMetaStoreClient client) {
   client.dropDatabase("test_databse");
}

2.3.4 删除数据表

public void dropTable(HiveMetaStoreClient client) {
   client.dropTable("test_database", "test_table");
}

3 数据权限配置

  • 数据权限可以在控制台进行配置,登陆 LAS 控制台,进入“权限管理-数据权限”页
  • 点击“新增授权”按钮,在新增授权页面中选择上一步创建的数据库,指定授权主体和选择期望授予的权限后,点击授权。
  • 完成授权后,可在数据权限页面上查看

4 最佳实践

EMR Serveless Spark 对接 LAS

关于EMR Serveless Spark ,详情可见 Serveless Spark 产品介绍

环境准备

在 EMR Serveless Spark 接入 LAS 前,需要提前确认以下信息:

  • 已经开通 LAS,若未开通可参考开通 LAS
  • 在 LAS 中已经完成数据目录配置。
  • 队列已经创建完毕。

上述信息都确认完毕后,可以开始在 EMR Serveless Spark 界面上开始实践。

Spark SQL

点击创建作业,指定开发类型为 Spark SQL,并指定作业队列
创建数据库
在 Spark SQL 界面,运行建库 DDL

CREATE DATABASE IF NOT EXISTS test_database SET location 'TOS://bucket/warehouse/test_database'

执行完毕后,您可以在 LAS 上查看 test_database 详情
创建数据表
在 Spark SQL 界面,运行建表 DDL

use test_database;

CREATE TABLE IF NOT EXISTS test_table(id BIGINT, name STRING, age INT);

创建分区表

use test_database;

CREATE TABLE IF NOT EXISTS test_partition_table(id BIGINT, name STRING, age INT) PARTITIONED BY (ds STRING);

执行完毕后,您可以在 LAS 上查看到新建表的详情,也可以在 TOS 库路径下看到表目录已经创建。
数据写入与查询
在 Spark SQL 界面,运行 DML。

use test_database;

INSERT INTO `test_table` VALUES (1, 'tom', 12);
use test_database;

INSERT INTO `test_partition_table` PARTITION(ds='20240412') VALUES (1, 'tom', 12);

数据插入完毕后,对于非分区表在表目录下已经创建出数据文件,对于分区表在表分区目录下已经创建出数据文件。在 LAS 上,可以看到表的信息已经更新。
数据写入完毕后,运行 DQL 查看刚刚写入的数据。

use test_database;

SELECT id, name, age FROM test_database;
use test_database;

SELECT id, name, age FROM test_database WHERE ds = '20240412';

Spark Jar

上传作业 Jar 包
在创建 Spark Jar 作业之前,需要先将待执行文件上传至 TOS 路径下
创建 Spark Jar

  • 点击创建作业,指定开发类型为 Spark Jar
  • 在弹窗内配置 Spark Jar 信息,其中资源文件为第一步上传的 jar 包,Main Class 为作业入口函数所在类名,配置完毕后点击运行

查看作业运行情况
作业运行后,可以点击作业名称查看作业详情与日志。