在EMR Serverless Spark中使用Hudi

Apache Hudi是一种数据湖存储格式,在Hadoop文件系统之上提供了更新数据、删除数据以及消费变化数据的能力,详情请参见Apache Hudi。本文为您介绍如何在EMR Serverless Spark中实现Hudi表的读取与写入操作。

前提条件

已创建工作空间,详情请参见创建工作空间

操作流程

步骤一:创建SQL会话

  1. 进入会话管理页面。

    1. 登录E-MapReduce控制台

    2. 在左侧导航栏,选择EMR Serverless > Spark

    3. Spark页面,单击目标工作空间名称。

    4. EMR Serverless Spark页面,单击左侧导航栏中的会话管理

  2. SQL会话页面,单击创建SQL会话

  3. 创建SQL会话页面的Spark配置区域,配置以下信息,单击创建。详情请参见管理SQL会话

    spark.sql.extensions             org.apache.spark.sql.hudi.HoodieSparkSessionExtension
    spark.sql.catalog.spark_catalog  org.apache.spark.sql.hudi.catalog.HoodieCatalog
    spark.serializer                 org.apache.spark.serializer.KryoSerializer
    spark.jars                       /opt/hudi/hudi-spark.jar

步骤二:读写Hudi表

  1. 进入SQL开发页面。

    EMR Serverless Spark页面,单击左侧导航栏中的开发

  2. 开发目录页签下,单击新建

  3. 新建对话框中,输入名称(例如users_task),类型使用默认的SparkSQL,然后单击确定

  4. 拷贝如下代码到新增的SparkSQL页签(users_task)中。

    CREATE DATABASE IF NOT EXISTS ss_hudi_db;
    
    CREATE TABLE ss_hudi_db.hudi_tbl (id INT, name STRING) USING hudi TBLPROPERTIES (
      type = 'cow',
      primaryKey = 'id'
    );
    
    INSERT INTO ss_hudi_db.hudi_tbl VALUES (1, "a"), (2, "b");
    
    SELECT id, name FROM ss_hudi_db.hudi_tbl ORDER BY id;
    
    DROP TABLE ss_hudi_db.hudi_tbl;
    
    DROP DATABASE ss_hudi_db;
  5. 在数据库下拉列表中选择一个数据库,在会话下拉列表中选择刚刚创建的SQL会话。

  6. 单击运行,执行任务。返回信息如下所示。

    image

相关文档