本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 AWS Amazon EMR 上使用 Glue Data Catalog Catalog 搭配 Spark
您可以使用 Amazon EMR 5.8.0 版或更新版本,將 Spark 設定為使用 AWS Glue Data Catalog 作為其 Apache Hive 中繼存放區。當您需要由不同叢集、服務、應用程式或帳戶共用的持久性 Hive 中繼存放區或 AWS Hive 中繼存放區時,我們建議您使用此組態。
您可以使用 Amazon EMR 6.5.0 版或更新版本,將 Spark 設定為搭配 Apache Iceberg 使用 AWS Glue Data Catalog。
使用 Amazon EMR 7.5.0 或更新版本,您可以將 Spark 設定為使用 AWS Glue Data Catalog 作為其 Iceberg REST 目錄。
AWS Glue 是一種全受管擷取、轉換和載入 (ETL) 服務,可讓您以簡單且符合成本效益的方式分類資料、清理資料、擴充資料,並在各種資料存放區之間可靠地移動資料。 AWS Glue Data Catalog 提供跨各種資料來源和資料格式的統一中繼資料儲存庫,與 Amazon EMR 以及 Amazon RDS、Amazon Redshift、Redshift Spectrum、Athena 以及與 Apache Hive 中繼存放區相容的任何應用程式整合。 AWS Glue 爬蟲程式可以從 Amazon S3 中的來源資料自動推斷結構描述,並將相關聯的中繼資料存放在 Data Catalog 中。如需 Data Catalog 的詳細資訊,請參閱《Glue AWS 開發人員指南》中的填入 Glue Data Catalog。 AWS
Glue AWS 會另外收費。資料目錄中儲存和存取中繼資料的月費、Glue ETL AWS 任務和爬蟲程式執行期每分鐘計費的小時費率,以及每個佈建開發端點每分鐘計費的小時費率。Data Catalog 可讓您免費儲存多達一百萬個物件。如果您存放超過一百萬個物件,之後每 100,000 個物件會向您收費 1 美元。Data Catalog 中的物件是資料表、分割區或資料庫。如需詳細資訊,請參閱 Glue 定價
重要
如果您在 2017 年 8 月 14 日之前使用 Amazon Athena 或 Amazon Redshift Spectrum 建立資料表,資料庫和資料表會存放在 Athena 受管目錄中,該目錄與 AWS Glue Data Catalog 不同。若要將 Amazon EMR 與這些資料表整合,您必須升級至 AWS Glue Data Catalog。如需詳細資訊,請參閱《Amazon Athena 使用者指南》中的升級至 AWS Glue Data Catalog。
將 AWS Glue Data Catalog 指定為 Apache Hive 中繼存放區
您可以使用 AWS AWS Management Console AWS CLI或 Amazon EMR API,將 Glue Data Catalog 指定為中繼存放區。當使用 CLI 或 API 時,您要使用 Spark 的組態分類來指定 Data Catalog。此外,使用 Amazon EMR 5.16.0 及更新版本,您可以使用組態分類來指定不同 中的 Data Catalog AWS 帳戶。在使用主控台時,您可以透過進階選項或快速選項指定 Data Catalog。
注意
Zeppelin 也提供使用 AWS Glue Data Catalog 的選項,因為 Zeppelin 已安裝 Spark 元件。
使用新主控台將 AWS Glue Data Catalog 指定為 Apache Hive 中繼存放區
-
登入 AWS Management Console,並在 https://https://console.aws.amazon.com/emr
開啟 Amazon EMR 主控台。 -
在左側導覽窗格中的 EC2 上的 Amazon EMR 下,選擇叢集,然後選擇建立叢集。
-
在應用程式套件下方,選擇 Spark 或自訂。如果您自訂叢集,確保選取 Zeppelin 或 Spark 作為您的其中一個應用程式。
-
在 AWS Glue Data Catalog 設定下方,選取用於 Spark 資料表中繼資料核取方塊。
-
選擇適用於您的叢集的任何其他選項。
-
若要啟動您的叢集,請選擇建立叢集。
將 AWS Glue Data Catalog 指定為 Apache Iceberg 目錄
您可以使用 、 或 AWS Amazon EMR API,或在 Spark AWS Management Console工作階段執行時間組態中,將 Glue Data Catalog 指定為 Apache Iceberg 目錄實作或 Apache Iceberg REST AWS CLI目錄端點。當使用 CLI 或 API 時,您要使用 Spark 的組態分類來指定 Data Catalog。如需詳細資訊,請參閱將 AWS Glue Data Catalog 指定為 Apache Iceberg 目錄。
IAM 許可
叢集的 EC2 執行個體描述檔必須具有 Glue 動作的 IAM AWS 許可。此外,如果您啟用 AWS Glue Data Catalog 物件的加密,也必須允許該角色加密、解密和產生 AWS KMS key 用於加密的 。
Glue AWS 動作的許可
如果您將預設的 EC2 執行個體設定檔用於 Amazon EMR,就不需要採取任何動作。連接到 的AmazonElasticMapReduceforEC2Role
受管政策EMR_EC2_DefaultRole
允許所有必要 AWS 的 Glue 動作。不過,如果您指定自訂 EC2 執行個體設定檔和許可,則必須設定適當的 AWS Glue 動作。使用 AmazonElasticMapReduceforEC2Role
受管政策做為起點。如需詳細資訊,請參閱《Amazon EMR 管理指南》中的叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔)。
加密和解密 AWS Glue Data Catalog 的許可
您的執行個體設定檔需要許可,以便使用您的金鑰來加密和解密資料。如若下列兩個陳述式均適用,則您不需要設定這些許可:
-
您可以使用 Glue AWS 的受管金鑰來啟用 AWS Glue Data Catalog 物件的加密。
-
您可以使用與 Glue Data Catalog AWS 帳戶 AWS 相同的叢集。
否則,您必須新增以下陳述式至附接至您的 EC2 執行個體設定檔的許可政策。
[ { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:
region
:acct-id
:key/12345678-1234-1234-1234-123456789012
" } ] } ]
如需 AWS Glue Data Catalog 加密的詳細資訊,請參閱《AWS Glue 開發人員指南》中的加密您的資料目錄。
資源型許可
如果您在 AWS Amazon EMR 中使用 Glue 搭配 Hive、Spark 或 Presto, AWS 則Glue 支援以資源為基礎的政策來控制對 Data Catalog 資源的存取。這些資源包含資料庫、資料表、連線和使用者定義的函數。如需詳細資訊,請參閱《AWS Glue 開發人員指南》中的 AWS Glue 資源政策。
使用資源型政策限制從 Amazon EMR 內存取 AWS Glue 時,您在許可政策中指定的委託人必須是與建立叢集時指定的 EC2 執行個體設定檔相關聯的角色 ARN。例如,對於附接至型錄的資源型政策,您可以使用下列範例所示的格式,將叢集 EC2 執行個體的預設服務角色的角色 ARN (EMR_EC2_DefaultRole
) 指定為 Principal
:
arn:aws:iam::
acct-id
:role/EMR_EC2_DefaultRole
acct-id
可以與 Glue 帳戶 ID AWS 不同。這可讓您從不同帳戶中的 EMR 叢集進行存取。您可以指定多個主體,每個主體都來自不同的帳戶。
使用 AWS Glue Data Catalog 時的考量
使用 AWS Glue Data Catalog 搭配 Spark 做為 Apache Hive 中繼存放區時,請考慮下列項目:
-
擁有預設資料庫,無需在建立表格時會導致的位置 URI。為了解決此問題,當您使用
LOCATION
時,請使用s3://
條款來指定儲存貯體的位置 (例如amzn-s3-demo-bucket1
CREATE TABLE
)。或者建立預設資料庫以外之資料庫內的表格。 不支援從 Glue AWS 中重新命名資料表。
當您建立 Hive 資料表而未指定
LOCATION
時,資料表資料將儲存在hive.metastore.warehouse.dir
屬性指定的位置。依預設,該位置在 HDFS 中。如果另一個叢集需要存取該資料表,除非它對建立資料表的叢集具有足夠的許可,否則存取將會失敗。此外,由於 HDFS 儲存是暫時性的,若叢集終止,資料表資料將會丟失,還必須重新建立資料表。當您使用 Glue 建立 Hive 資料表時,建議您在 Amazon S3 AWSLOCATION
中指定 。或者,您可以使用hive-site
組態分類在 Amazon S3 中指定hive.metastore.warehouse.dir
的位置,該位置將套用到全部 Hive 資料表。如果在 HDFS 位置建立資料表,且建立資料表的叢集仍在執行中,您可以從 Glue AWS 中將資料表位置更新為 Amazon S3。如需詳細資訊,請參閱《Glue AWS 開發人員指南》中的在 Glue 主控台上使用資料表。 AWS不支援包含引號和撇號的分割區值,例如,
PARTITION (owner="Doe's").
emr-5.31.0 及更高版本不支援資料欄統計資料
。 不支援使用 Hive 授權
。或者,您可以考慮使用 AWS Glue 資源型政策。如需詳細資訊,請參閱使用資源型政策來存取 AWS Glue Data Catalog。
使用 AWS Glue Data Catalog 做為 Apache Iceberg REST Catalog 搭配 Spark 時,請考慮下列事項:
如果您將 Spark 工作階段目錄與 Iceberg 搭配使用,如 中所述使用 Iceberg SparkCatalog 與 SparkSessionCatalog 時的組態差異,除了將 AWS Glue Data Catalog 設定為 Apache Iceberg REST 目錄之外,您還必須將 AWS Glue Data Catalog 設定為 Apache Hive 中繼存放區。
AWS Glue Data Catalog IRC 端點僅支援 Amazon SigV4 身分驗證機制。不支援 OAuth。對於 OAuth 使用者,請使用 IAM Identity Center 設定存取權。請參閱將 Lake Formation 與 IAM Identity Center 連線。
Glue Iceberg REST AWS 目錄不支援開放原始碼中的所有操作。