Iceberg是一種開放的數據湖表格式。您可以借助Iceberg快速地在HDFS或者阿里云OSS上構建自己的數據湖存儲服務。本文為您介紹如何在EMR Serverless Spark中實現Iceberg表的讀取與寫入操作。
前提條件
已創建工作空間,詳情請參見創建工作空間。
使用限制
僅支持在選擇了DLF 1.0或Hive Metastore Service(HMS)的元數據工作空間中使用。
操作流程
Spark與Notebook均支持對Iceberg表的讀寫操作。本文將以SparkSQL任務為例進行介紹。
步驟一:創建會話資源
進入會話管理頁面。
在左側導航欄,選擇
。在Spark頁面,單擊目標工作空間名稱。
在EMR Serverless Spark頁面,單擊左側導航欄中的會話管理。
在SQL會話頁面,單擊創建SQL會話。
在創建SQL會話頁面的Spark配置區域,配置以下信息,單擊創建。詳情請參見管理SQL會話。
spark.sql.extensions org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions spark.sql.catalog.iceberg org.apache.iceberg.spark.SparkCatalog spark.sql.catalog.iceberg.catalog-impl org.apache.iceberg.aliyun.dlf.hive.DlfCatalog
單擊新建SQL會話實例操作列的啟動。
步驟二:讀寫Iceberg表
進入SQL開發頁面。
在EMR Serverless Spark頁面,單擊左側導航欄中的數據開發。
在開發目錄頁簽下,單擊新建。
在新建對話框中,輸入名稱(例如users_task),類型使用默認的SparkSQL,然后單擊確定。
拷貝如下代碼到新增的SparkSQL頁簽(users_task)中。
CREATE DATABASE IF NOT EXISTS iceberg.ss_iceberg_db; CREATE TABLE iceberg.ss_iceberg_db.iceberg_tbl (id INT, name STRING) USING iceberg; INSERT INTO iceberg.ss_iceberg_db.iceberg_tbl VALUES (1, "a"), (2, "b"); SELECT id, name FROM iceberg.ss_iceberg_db.iceberg_tbl ORDER BY id;
當您需要進行刪除操作時,可以刪除相應的表和數據庫信息。
DROP TABLE ss_hudi_db.hudi_tbl; DROP DATABASE ss_hudi_db;
在數據庫下拉列表中選擇一個數據庫,在會話下拉列表中選擇剛剛創建的SQL會話實例。
單擊運行,執行任務。返回信息如下所示。
相關文檔
SQL任務和任務編排完整的開發流程示例,請參見SQL開發快速入門。
更多Iceberg相關用法和配置,請參見Apache Iceberg。
創建SQL會話資源的具體操作,請參見管理SQL會話。
創建Notebook會話資源的具體操作,請參見管理Notebook會話。