考量與限制
當您搭配 AWS Glue 使用 Lake Formation 時,請考慮下列考量和限制。
所有支援的區域都可使用 AWS Glue 與 Lake Formation,AWS GovCloud (美國東部) 和 AWS GovCloud (美國西部) 除外。
-
對於 Apache Hive 和 Apache Iceberg 資料表,AWS Glue 透過 Lake Formation 支援精細存取控制。Apache Hive 格式包括 Parquet、ORC 和 CSV。
-
只能將 Lake Formation 與 Spark 任務搭配使用。
-
具有 Lake Formation 的 AWS Glue 在任務中僅支援單一 Spark 工作階段。
-
啟用 Lake Formation 時,AWS Glue 需要更多工作者,因為其需要一個系統驅動程式、系統執行器、一個使用者驅動程式,以及可選的使用者執行器 (當您的任務具有 UDF 或
spark.createDataFrame時需要)。 -
具有 Lake Formation 的 AWS Glue 僅支援透過資源連結共用的跨帳戶資料表查詢。資源連結的名稱必須與來源帳戶的資源相同。
-
若要啟用 Glue AWS 任務的精細存取控制,請傳遞
--enable-lakeformation-fine-grained-access任務參數。 -
可以設定 AWS Glue 任務以使用 AWS Glue 多型錄階層。如需有關搭配使用 AWS Glue
StartJobRunAPI 的組態參數資訊,請參閱在 EMR Serverless 上使用 AWS Glue 多型錄階層。 -
不支援下列內容:
-
彈性分散式資料集 (RDD)
-
Spark 串流
-
使用 Lake Formation 授權的許可進行寫入
-
巢狀資料欄的存取控制
-
-
AWS Glue 會阻止可能會破壞系統驅動程式完整隔離的功能,包括下列項目:
-
UDT、HiveUDF 以及任何涉及自訂類別的使用者定義的函數
-
自訂資料來源
-
為 Spark 延伸模組、連接器或中繼存放區提供額外的 jar
-
ANALYZE TABLE命令
-
-
為了強制執行存取控制,諸如
DESCRIBE TABLE等EXPLAIN PLAN和 DDL 操作不會公開限制資訊。 -
AWS Glue 會限制存取已啟用 Lake Formation 之應用程式的系統驅動程式 Spark 日誌。由於系統驅動程式執行時具有更多存取權,因此系統驅動程式產生的事件和日誌可能包含敏感資訊。為了防止未經授權的使用者或程式碼存取此敏感資料,AWS Glue 已停用對系統驅動程式日誌的存取。如需疑難排解,請聯絡 AWS 支援。
-
如果已向 Lake Formation 註冊資料表位置,無論 AWS Glue 任務執行時期角色的 IAM 許可為何,資料存取路徑都會經過 Lake Formation 儲存的憑證。如果您錯誤設定向資料表位置註冊的角色,則使用對該資料表具有 S3 IAM 許可的角色提交的任務將會失敗。
-
寫入 Lake Formation 資料表會使用 IAM 許可,而非 Lake Formation 授予的許可。如果您的任務執行時期角色具有必要的 S3 許可,則可以使用其來執行寫入操作。
以下是使用 Apache Iceberg 時的考量與限制:
-
只能將 Apache Iceberg 與工作階段型錄搭配使用,不能與任意命名型錄搭配使用。
-
在 Lake Formation 中註冊的 Iceberg 資料表僅支援中繼資料資料表
history、metadata_log_entries、snapshots、files、manifests、refs和 AWS。Glue 會隱藏可能具有敏感資料的資料欄,例如partitions、path和summaries。此限制不適用於未在 Lake Formation 中註冊的 Iceberg 資料表。 -
未在 Lake Formation 中註冊的資料表支援所有 Iceberg 儲存的程序。所有資料表都不支援
register_table和migrate程序。 -
建議您使用 Iceberg DataFrameWriterV2 而非 V1。
工作者分配範例
對於使用下列參數設定的任務:
--enable-lakeformation-fine-grained-access=true --number-of-workers=20
工作者分配如下:
使用者驅動程式有一個工作者。
系統驅動程式有一個工作者。
為使用者執行器保留的其餘 18 個工作者的 10% (即 2 個工作者)。
最多為系統執行器分配 16 個工作者。
啟用自動擴展後,使用者執行器可以視需要利用系統執行器中任何未分配的容量。
控制使用者執行器分配
可以使用下列組態來調整使用者執行器的保留百分比:
--conf spark.dynamicAllocation.maxExecutorsRatio=<value between 0 and 1>
此組態允許針對相對於總可用容量而言預留的使用者執行器數量進行微調控制。