Delta Lake 和 Lake Formation - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Delta Lake 和 Lake Formation

Amazon 6.15.0 及更高EMR版本包括支援使用 Spark 讀取和寫入資料時,使 AWS Lake Formation 用 Delta 湖為基礎的精細存取控制。SQLAmazon 透過 Delta 湖EMR支援資料表、列、欄和儲存格層級存取控制。使用此功能,您可以在 copy-on-write 資料表上執行快照查詢,以便在指定認可或壓縮瞬間查詢資料表的最新快照集。

若要將三角洲湖與 Lake Formation 搭配使用,請執行以下指令。

spark-sql \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \ --conf spark.sql.catalog.spark_catalog.lf.managed=true

如果您希望 Lake Formation 使用記錄服務器來管理您的 Spark 目錄,請設置spark.sql.catalog.<managed_catalog_name>.lf.managed為 true。

下列支援矩陣列出了 Delta Lake 和 Lake Formation 的部分核心功能:

寫入時複製 讀取時合併的比較

快照查詢-星火 SQL

讀取優化查詢-星火 SQL

增量查詢

不支援

不支援

時間歷程查詢

不支援

不支援

中繼資料表

DMLINSERT命令

DDL命令

Spark 資料來源查詢

Spark 資料來源寫入

在 AWS Glue 資料目錄中建立差異湖表格

Amazon EMR 與 Lake Formation 不支持DDL命令和 Delta 表創建。請依照下列步驟在 AWS Glue 資料型錄中建立表格。

  1. 使用下列範例建立差異資料表。確保您的 S3 位置存在。

    spark-sql \ --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \ --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog" > CREATE DATABASE if not exists <DATABASE_NAME> LOCATION 's3://<S3_LOCATION>/transactionaldata/native-delta/<DATABASE_NAME>/'; > CREATE TABLE <TABLE_NAME> (x INT, y STRING, z STRING) USING delta; > INSERT INTO <TABLE_NAME> VALUES (1, 'a1', 'b1');
  2. 若要查看表格的詳細資訊,請移至https://console.aws.amazon.com/glue/

  3. 在左側導覽中,展開「資料目錄」,選擇「表格」,然後選擇您建立的表格。在 [結構描述] 下,您應該會看到您使用 Spark 建立的 Delta 資料表會以 AWS Glue 的資料類型儲存所有資料行。array<string>

  4. 若要在 Lake Formation 中定義資料欄和儲存格層級篩選,請從結構定義中移除資料欄,然後新增資料表結構定義中的資料欄。col在此範例中,新增欄xy、和z