本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 |
✓ |
✓ |
增量查詢 |
不支援 |
不支援 |
時間歷程查詢 |
不支援 |
不支援 |
中繼資料表 |
✓ |
✓ |
DML |
✓ |
✓ |
DDL命令 |
||
Spark 資料來源查詢 |
||
Spark 資料來源寫入 |
在 AWS Glue 資料目錄中建立差異湖表格
Amazon EMR 與 Lake Formation 不支持DDL命令和 Delta 表創建。請依照下列步驟在 AWS Glue 資料型錄中建立表格。
-
使用下列範例建立差異資料表。確保您的 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'); 若要查看表格的詳細資訊,請移至https://console.aws.amazon.com/glue/
。 在左側導覽中,展開「資料目錄」,選擇「表格」,然後選擇您建立的表格。在 [結構描述] 下,您應該會看到您使用 Spark 建立的 Delta 資料表會以 AWS Glue 的資料類型儲存所有資料行。
array<string>
若要在 Lake Formation 中定義資料欄和儲存格層級篩選,請從結構定義中移除資料欄,然後新增資料表結構定義中的資料欄。
col
在此範例中,新增欄x
y
、和z
。