本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
具有精細存取控制的 Apache Delta Lake
當您使用 Spark SQL 讀取和寫入資料時,Amazon EMR 6.15.0 版及更高版本包含支援透過 AWS Lake Formation Delta Lake 的 進行精細存取控制。Amazon EMR 使用 Delta Lake 來支援資料表、資料列、資料欄和儲存格層級存取控制。此功能讓您能對寫入時複製資料表執行快照查詢,以查詢指定遞交或壓縮時的最新資料表快照。
若要搭配 Lake Formation 使用 Delta Lake,請執行下列命令。
若要在 EMR 7.10 及更高版本上使用 Delta Lake 搭配 Lake Formation,請執行下列命令:
spark-sql \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog
若要在 EMR 6.15 到 7.9 上使用 Delta Lake 搭配 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 的部分核心功能:
| 寫入時複製 | 讀取時合併的比較 | |
|---|---|---|
|
快照查詢:Spark SQL |
✓ |
✓ |
|
讀取優化查詢:Spark SQL |
✓ |
✓ |
|
增量查詢 |
不支援 |
不支援 |
|
時間歷程查詢 |
不支援 |
不支援 |
|
中繼資料表 |
✓ |
✓ |
|
DML |
✓ |
✓ |
|
DDL 命令 |
||
|
Spark 資料來源查詢 |
||
|
Spark 資料來源寫入 |
在 Glue Data Catalog AWS 中建立 Delta Lake 資料表
Amazon EMR with Lake Formation 不支援 DDL 命令和 Delta 資料表建立。請依照下列步驟,在 Glue Data Catalog AWS 中建立資料表。
-
使用下列範例來建立 Delta 資料表。請確定您的 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://https://console.aws.amazon.com/glue/
。 在左側導覽中,展開 Data Catalog,選擇資料表,然後選擇您建立的資料表。在結構描述下,您應該會看到您使用 Spark 建立的 Delta 資料表將所有資料欄存放在 Glue AWS 的資料類型
array<string>中。若要在 Lake Formation 中定義資料欄和儲存格層級篩選條件,請從結構描述中移除
col資料欄,然後新增資料表結構描述中的資料欄。在此範例中,新增欄x、y和z。