You need to enable JavaScript to run this app.
导航
Serverless Spark 读写 Serverless Doris 操作手册
最近更新时间:2025.05.14 17:03:23首次发布时间:2025.05.14 17:03:23
我的收藏
有用
有用
无用
无用

前期准备

创建 TOS 桶

  1. 登录 TOS 控制台,创建 TOS 桶,具体创建方式可参考:创建TOS桶
  2. 基于您创建的 TOS 桶创建您所需的目录,该目录作为 Spark Doris Connector 默认存储目录。

Doris 数据准备

  1. 登录 EMR Serverless 控制台,创建 Doris 实例
  2. 连接实例后,执行下列 SQL 进行数据库&表准备,连接实例方式可见:连接实例,Doris 基础使用可见:Doris 基础使用
CREATE DATABASE if not EXISTS online_database;
USE online_database;
CREATE TABLE table1
(
    siteid INT DEFAULT '10',
    citycode SMALLINT,
    username VARCHAR(32) DEFAULT '',
    pv BIGINT SUM DEFAULT '0'
)
AGGREGATE KEY(siteid, citycode, username)
DISTRIBUTED BY HASH(siteid) BUCKETS 10;
  1. 数据准备完成后,您可进行数据查看,数据展示内容如下则表示数据准备完成:

Serverless Spark 数据准备

  1. 创建资源队列。
    登录 EMR Serverless 控制台创建 Serverless 独占队列,当队列状态变为运行中时,可进行下一步操作。

    注意

    在设置资源队列时,必须启动网络配置相关功能,并且该队列所使用的 VPC 网络要与 Doris 实例所使用的 VPC 网络完全相同。只有这样,才能保证队列与 Doris 实例之间网络的兼容性和连通性,使得基于该队列的任务能够顺利访问 Doris 实例。

    说明

    建议关闭全局跨 VPC 路由功能,仅在需要访问 doris 的任务中添加set serverless.cross.vpc.access.enabled=true;参数打通网络。

    Image
  2. 创建数据库。
    登录EMR Serverless **** 页面,点击创建作业,进入创建作业页面,选择已创建好的独占队列 > Default 计算组,执行CREATE DATABASE IF NOT EXISTS ss_wr2sr;命令创建数据库 ss_wr2sr。
  3. 创建数据表。
    登录 EMR Serverless > 创建作业 > 编辑作业页面,选择已创建好的独占队列 > Default计算组,执行如下命令在数据库 ss_wr2sr 中创建两张数据表 ss_table1 和 ss_table2。
    CREATE TABLE if not exists ss_wr2sr.ss_table1(
      `siteid` int,
      `citycode` SMALLINT,
      `username` string,
      `pv` BIGINT
    );
    
    CREATE TABLE if not exists ss_wr2sr.ss_table2(
      `siteid` int,
      `citycode` SMALLINT,
      `username` string,
      `pv` BIGINT
    );
    

操作步骤

  1. 通过 Serverless Spark 对 Doris 数据表进行读写。
    进入 EMR Serverless 作业编辑页面,输入下列 SQL 代码块中示例的 Spark SQL 语句,点击作业编辑页面左下角的运行按钮,执行 SQL 作业。

    -- 填写 jar 依赖包的 TOS 地址
    set las.spark.jar.depend.jars = [{"fileName":"{dependency jar address}"}];
    --可选参数,设置Spark SQL默认目录
    set spark.sql.catalog.{your_catalog_name}=org.apache.doris.spark.catalog.DorisTableCatalog;
    set spark.sql.catalog.{your_catalog_name}.doris.fenodes={fe_ip:fe_http_port};
    set spark.sql.catalog.{your_catalog_name}.doris.query.port=9030;
    set spark.sql.catalog.{your_catalog_name}.doris.user={user name};
    set spark.sql.catalog.{your_catalog_name}.doris.password={user password};
    
    show databases;
    SELECT * FROM {your_catalog_name}.online_database.table1;
    INSERT INTO {your_catalog_name}.online_database.table1 select * from db.table;
    
  2. 通过 Serverless Spark 读 Doris 数据表,写 Hive 数据表。
    登录 EMR Serverless 作业编辑页面,输入下列 SQL 代码块中示例的 Spark SQL 语句,点击作业编辑框左下角的运行按钮,执行 SQL 作业。

    -- 填写 jar 依赖包的 TOS 地址
    set las.spark.jar.depend.jars = [{"fileName":"{dependency jar address}"}];
    
    set spark.sql.catalog.{your_catalog_name}=org.apache.doris.spark.catalog.DorisTableCatalog;
    set spark.sql.catalog.{your_catalog_name}.doris.fenodes={fe_ip:fe_http_port};
    set spark.sql.catalog.{your_catalog_name}.doris.query.port=9030;
    set spark.sql.catalog.{your_catalog_name}.doris.user={user name};
    set spark.sql.catalog.{your_catalog_name}.doris.password={user password};
    
    INSERT into ss_wr2sr.ss_table1 SELECT * FROM {your_catalog_name}.online_database.table1;
    
  3. 通过 Serverless Spark 读 Hive 数据表,写入 Doris 数据表。
    登录 EMR Serverless 作业编辑页面,输入下列 SQL 代码块中示例的 Spark SQL 语句,点击作业编辑框左下角的运行按钮,执行 SQL 作业。

    -- 填写 jar 依赖包的 TOS 地址
    set las.spark.jar.depend.jars = [{"fileName":"{dependency jar address}"}];
    
    set spark.sql.catalog.{your_catalog_name}=org.apache.doris.spark.catalog.DorisTableCatalog;
    set spark.sql.catalog.{your_catalog_name}.doris.fenodes={fe_ip:fe_http_port};
    set spark.sql.catalog.{your_catalog_name}.doris.query.port=9030;
    set spark.sql.catalog.{your_catalog_name}.doris.user={user name};
    set spark.sql.catalog.{your_catalog_name}.doris.password={user password};
    
    INSERT into {your_catalog_name}.online_database.table1 SELECT * FROM ss_wr2sr.ss_table2;
    
  4. 更多示例和参数请参考 Doris 社区文档

Dependency JAR addresses

请从 Doris 社区文档下载依赖的 spark-doris-connector 包,并上传到对应火山 TOS 路径。