Apache Hudi是一種資料湖儲存格式,在Hadoop檔案系統之上提供了更新資料、刪除資料以及消費變化資料的能力,詳情請參見Apache Hudi。本文為您介紹如何在EMR Serverless Spark中實現Hudi表的讀取與寫入操作。
前提條件
已建立工作空間,詳情請參見建立工作空間。
操作流程
步驟一:建立SQL會話
-
進入會話管理頁面。
-
在左側導覽列,選擇。
-
在Spark頁面,單擊目標工作空間名稱。
-
在EMR Serverless Spark頁面,單擊左側導覽列中的會話管理。
-
在SQL會話頁面,單擊建立SQL會話。
-
在创建 SQL 会话頁面的Spark 配置地區,配置以下資訊,單擊创建。詳情請參見管理SQL會話。
中繼資料是當前工作空間的預設Catalog。如果您希望將預設Catalog修改為外部的Hive Metastore,可以參見串連外部Hive Metastore Service。
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
步驟二:讀寫Hudi表
-
進入SQL開發頁面。
在EMR Serverless Spark頁面,單擊左側導覽列中的开发。
-
在开发目录頁簽下,單擊
表徵圖。 -
在新建對話方塊中,輸入名稱(例如users_task),類型使用預設的SparkSQL,然後單擊确定。
-
拷貝如下代碼到新增的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; -
在資料庫下拉式清單中選擇一個資料庫,在會話下拉式清單中選擇剛剛建立的SQL會話。
-
單擊运行,執行任務。
返回結果為包含兩條記錄的資料表:第1條
id=1、name=a;第2條id=2、name=b。
相關文檔
-
SQL任務和任務編排完整的開發流程樣本,請參見SparkSQL開發快速入門。
-
更多Hudi相關用法和配置,參見Hudi官方文檔。