使用Spark SQL进行作业开发

本文介绍如何使用Spark SQL进行外表作业开发。

前提条件

步骤一:创建OSS Hudi外表

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版湖仓版页签下,单击目标集群ID。

  2. 在左侧导航栏,单击作业开发 > SQL开发

  3. SQLConsole窗口,选择Spark引擎和Job型资源组。

  4. 输入以下语句,并单击执行SQL(F8),创建一个名为spark_external_db的外库,用于存储Hudi数据。本文以oss://testBucketName/adb-test-1/路径为例。

    CREATE DATABASE spark_external_db
    LOCATION 'oss://testBucketName/adb-test-1/';
  5. 在弹窗中,选择继续执行

    重要
    • 选择继续执行时,SQL语句为批量执行,SQL语句运行在单独的Spark App中,可以保证资源隔离和稳定性。本次入门教程推荐使用继续执行

    • 选择启动ThriftServer时,SQL语句为交互式执行,资源隔离为线程级的,且需要配置Spark ThriftServer后才执行SQL语句。详情请参见启停ThriftServer

  6. 使用继续执行的方式,在spark_external_db库中创建外表spark_hudi_table,用于存储Hudi数据。本文示例为oss://testBucketName/adb-test-1/spark_external_db/

    CREATE TABLE spark_external_db.spark_hudi_table
    (id int,
     name string,
     score int,
     city string
    )
    using hudi
    partitioned by (id)
    tblproperties
    (primaryKey = 'id', 
    preCombineField = 'city')
    LOCATION 'oss://testBucketName/adb-test-1/spark_external_db/';
  7. 插入数据。

    INSERT OVERWRITE spark_external_db.spark_hudi_table PARTITION(id) VALUES
    (001,'Anna',99,'London'),
    (002,'Bob',67,'USA'),
    (003,'Cindy',78,'Spain'),
    (004,'Dan',100,'China');

步骤二:查询OSS Hudi外表数据

  1. 输入以下语句,并单击执行SQL(F8),查询外表spark_hudi_table数据。

    SELECT * FROM spark_external_db.spark_hudi_table;
    说明

    如果湖仓版集群中有计算预留资源,企业版集群中有预留资源,可以使用XIHE MPP SQL在线方式(即选择XIHE引擎和Interactive资源组)查询外表数据。

  2. 在弹窗中,选择继续执行

    说明

    使用Spark SQL执行查询语句,返回结果不展示表数据。如果您需要查看表数据,请按照步骤3操作。

  3. (可选)在作业开发 > Spark Jar开发页面的应用列表中,单击目标SQL查询语句操作列的日志,在日志中可以查看表数据。