搭配使用 Presto 和 AWS Glue Data Catalog
藉由 Amazon EMR 發行版本 5.10.0 和更高版本,您可指定 AWS Glue Data Catalog 作為 Presto 的預設 Hive 中繼存放區。若您需要持久的中繼存放區或由不同叢集、服務、應用程式或 AWS 帳戶 帳戶共用的中繼存放區,建議使用此組態。
AWS Glue 是全受管的擷取、轉換和載入 (ETL) 服務,可讓您以輕鬆且經濟實惠的方式,將您的資料進行分類、清理、富集,以及可靠地在各種資料存放區之間移動。AWS Glue Data Catalog 對多種資料來源和資料格式提供統一的中繼資料儲存庫,它還與 Amazon EMR、Amazon RDS、Amazon Redshift、Redshift Spectrum、Athena,以及任何與 Apache Hive 中繼存放區相容的應用程式整合。AWSGlue 爬蟲程式可以自動從 Amazon S3 中的來源資料推斷結構描述,然後在 Data Catalog 中儲存關聯的中繼資料。如需有關 Data Catalog 的詳細資訊,請參閱《AWS 開發人員指南》 中的 填入 AWS Glue Data Catalog 。
使用 AWS Glue 需另外付費。在 Data Catalog 中儲存與存取中繼資料會產生每月費用,AWS Glue ETL 作業和爬蟲程式執行期的每小時費用按分鐘計費,而每個佈建開發端點的每小時費用也按分鐘計費。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 作為中繼存放區
您可以使用 AWS Management Console、AWS CLI 或 Amazon EMR API,指定 AWS Glue Data Catalog 作為中繼存放區。當使用 CLI 或 API 時,您要使用 Presto 的組態分類來指定 Data Catalog。此外,憑藉 Amazon EMR 5.16.0 或更高版本,您可以使用組態分類在不同 AWS 帳戶 中指定 Data Catalog。在使用主控台時,您可以透過 進階選項 或 快速選項 指定 Data Catalog。
若要使用新主控台將 AWS Glue Data Catalog 作為 Hive 中繼存放區
-
登入 AWS Management Console,並在 https://console.aws.amazon.com/emr
在左側導覽窗格中的 EC2 上的 EMR 下方,選擇 叢集 ,然後選擇 建立叢集 。
在 應用程式套件 下方,選擇 Presto 。
在 AWS Glue Data Catalog 設定 下方,選取 用於 Presto 資料表中繼資料 核取方塊。
選擇適用於您的叢集的任何其他選項。
若要啟動您的叢集,請選擇 建立叢集 。
- Old console
若要使用舊主控台將 AWS Glue Data Catalog 作為預設的 Presto 中繼存放區
-
導覽至新的 Amazon EMR 主控台,然後從側邊導覽選取 切換至舊主控台 。如需有關切換至舊主控台時預期情況的詳細資訊,請參閱 使用舊主控台 。
-
選擇 Create cluster (建立叢集) ,然後選擇 Go to advanced options (前往進階選項) 。
在 Software Configuration (軟體組態) 下選擇 Release (版本) emr-5.10-0 (emr-5.10-0) 或更新版本,並選取 Presto (Presto) 。
選取 Use for Presto table metadata (用於 Presto 表格中繼資料) ,選擇 Next (下一步) ,接著完成其他適合您應用程式的叢集設定。
若要使用 AWS CLI 將 AWS Glue Data Catalog 作為預設的 Hive 中繼存放區
如需了解在建立叢集時指定以下組態分類的範例,請參閱 設定應用程式 。
Amazon EMR 5.16.0 版及更高版本
-
將
"Classification": "presto-connector-hive", "Properties": { "hive.metastore": "glue"hive.metastore
屬性設定為glue
,如以下 JSON 範例中所示。若要在不同的 AWS 帳戶 中指定 Data Catalog,請新增
"Classification": "presto-connector-hive", "Properties": { "hive.metastore": "glue", "hive.metastore.glue.catalogid": "hive.metastore.glue.catalogid
屬性,如以下 JSON 範例中所示。使用 Data Catalog 的 AWS 帳戶取代acct-id
acct-id
"Amazon EMR 5.10.0 到 5.15.0
將
"Classification": "presto-connector-hive", "Properties": { "hive.metastore.glue.datacatalog.enabled": "true"hive.metastore.glue.datacatalog.enabled
屬性設定為true
,如以下 JSON 範例中所示:使用 PrestoSQL (Trino) 的 Amazon EMR 6.1.0 及更高版本
從 EMR 版本 6.1.0 開始,PrestoSQL 也支援 Glue 作為預設的 Hive 中繼存放區。使用
prestosql-connector-hive
組態分類並且將hive.metastore
屬性設定為glue
,如以下 JSON 範例所示。Amazon EMR 版本 6.4.0 及更高版本使用新名稱 Trino,而非 PrestoSQL。如果您使用 Trino,請使用
"Classification": "trino-connector-hive
取代以下組態分類中的prestosql-connector-hive
prestosql-connector-hive
", "Properties": { "hive.metastore": "glue"若要在長期執行的叢集上切換中繼存放區,您可以透過手動方式,首先連線到主節點,接著在
/etc/presto/conf/catalog/hive.properties
檔案中直接編輯屬性值,然後重新啟動 Presto 伺服器 (sudo restart presto-server
),再來就是為您的發行版本設定適合的值。如果是在 Amazon EMR 5.15.0 和更早版本使用此方法,請確定hive.table-statistics-enabled
已設為false
。當使用發行版本為 5.16.0 及更新版本時,這個設定不是必要設定;但無論使用哪種版本,都不支援表格和分割區統計資訊。IAM 許可
叢集的 EC2 執行個體設定檔必須有 AWS Glue 動作的 IAM 許可。此外,如果您針對 AWS Glue Data Catalog 物件啟用加密,則角色也必須允許加密、解密和產生用於加密的 AWS KMS key。
AWS Glue 動作的許可
如果您將預設的 EC2 執行個體設定檔用於 Amazon EMR,就不需要採取任何動作。附接至
EMR_EC2_DefaultRole
的AmazonElasticMapReduceforEC2Role
受管政策允許所有必要的 AWS Glue 動作。不過,如果您指定自訂 EC2 執行個體設定檔和許可,則必須設定適當的 AWS Glue 動作。使用AmazonElasticMapReduceforEC2Role
受管政策做為起點。如需詳細資訊,請參閱《Amazon EMR 管理指南》 中的 叢集 EC2 執行個體的服務角色 (EC2 執行個體設定檔) 。加密和解密 AWS Glue Data Catalog 的許可
您的執行個體設定檔需要許可,以便使用您的金鑰來加密和解密資料。如若下列兩個陳述式均適用,則您 不 需要設定這些許可:
您使用 AWS Glue 的受管金鑰對 AWS Glue Data Catalog 啟用加密。
您使用和 AWS Glue Data Catalog 位在同一 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 開發人員指南》 中的 加密您的資料型錄 。
資源型許可
如果您在 Amazon EMR 中將 AWS 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
可以與 AWS Glue 帳戶 ID 不同。這可讓您從不同帳戶中的 EMR 叢集進行存取。您可以指定多個主體,每個主體都來自不同的帳戶。使用 AWS Glue Data Catalog 時的考量
使用 AWS Glue Data Catalog 作為連接 Presto 的中繼存放區時,請考慮以下項目:
-