本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用外部 MySQL 資料庫或 Amazon Aurora
若要使用外部 MySQL 資料庫或 Amazon Aurora 作為 Hive 中繼存放區,請於 Hive 為中繼存放區覆寫預設組態值,以在 Amazon RDS MySQL 執行個體或 Amazon Aurora PostgreSQL 執行個體上指定外部資料庫位置。
注意
Hive 不支援也無法避免對中繼存放區資料表的同時寫入存取權。如果您在兩個叢集間共用中繼存放區資訊,您必須確保不會同時寫入同一個表格中繼存放區,除非您寫入的是相同中繼存放區資料表中的不同分割區。
下列程序說明如何為 Hive 中繼存放區位置覆寫預設組態值,並使用重新設定的中繼存放區位置來啟動叢集。
若要建立位於 EMR 叢集之外的中繼存放區
-
建立 MySQL 或 Aurora PostgreSQL 資料庫。如果您使用 PostgreSQL,則必須在佈建叢集之後進行設定。建立叢集時僅支援 MySQL。如需有關 Aurora MySQL 和 Aurora PostgreSQL 之間差異的資訊,請參閱 Amazon Aurora MySQL 概觀和使用 Amazon Aurora PostgreSQL。如需有關如何建立 Amazon RDS 資料庫的一般資訊,請參閱 https://aws.amazon.com/rds/
。 -
修改您的安全群組以允許資料庫與 ElasticMapReduce-Master (ElasticMapReduce-Master) 安全群組之間的 JDBC 連線。如需有關如何修改存取安全群組的資訊,請參閱使用 Amazon EMR 受管安全群組。
-
在
hive-site.xml
中設定 JDBC 設定值:重要
如果您是將敏感資訊 (例如,密碼) 提供到 Amazon EMR 組態 API,將會對許可不足的那些帳戶顯示此資訊。如果您擔心這個資訊可能向其他使用者顯示,透過建立可明確拒絕對
elasticmapreduce:DescribeCluster
API 金鑰之許可的使用者,使用管理帳戶建立叢集並限制其他使用者 (IAM 使用者或具有委派登入資料的使用者) 存取叢集上的服務。-
建立名為
hiveConfiguration.json
的組態檔案,內含對hive-site.xml
的編輯,如下所示。使用執行資料庫的 Amazon RDS 執行個體之 DNS 地址取代
hostname
,並且使用資料庫的登入資料取代username
和password
。如需有關連線至 MySQL 和 Aurora 資料庫執行個體的詳細資訊,請參閱《Amazon RDS 使用者指南》中的連線至執行 MySQL 資料庫引擎的資料庫執行個體和連線至 Athena 資料庫叢集。javax.jdo.option.ConnectionURL
是用於 JDBC 中繼存放區的 JDBC 連線字串。javax.jdo.option.ConnectionDriverName
是 JDBC 中繼存放區的驅動程式類別名稱。MySQL JDBC 驅動器由 Amazon EMR 安裝。
值屬性不能包含空格或歸位。它應該顯示在單一列。
[ { "Classification": "hive-site", "Properties": { "javax.jdo.option.ConnectionURL": "jdbc:mysql://
hostname
:3306/hive?createDatabaseIfNotExist=true", "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver", "javax.jdo.option.ConnectionUserName": "username", "javax.jdo.option.ConnectionPassword": "password" } } ] -
當您建立叢集時,請參考
hiveConfiguration.json
檔案,如下列 AWS CLI 命令所示。在這個命令中,檔案會存放在本機,您也可以將檔案上傳到 Amazon S3 並加以參考 (例如s3://
)。DOC-EXAMPLE-BUCKET
/hiveConfiguration.json注意
包含 Linux 行接續字元 (\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows,請將其移除或取代為插入符號 (^)。
aws emr create-cluster --release-label
emr-7.7.0
--instance-type m5.xlarge --instance-count 2 \ --applications Name=Hive --configurations file://hiveConfiguration.json --use-default-roles
-
-
連接至您的叢集主節點。
有關如何連接到主節點的資訊,請參閱《Amazon EMR 管理指南》中的使用 SSH 連接到主節點。
-
透過輸入類似如下的命令來建立您的 Hive 資料表,以便在 Amazon S3 上指定位置:
CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( key int, value int ) LOCATION s3://
DOC-EXAMPLE-BUCKET
/hdfs/ -
將您的 Hive 指令碼新增至執行中叢集。
Hive 叢集會使用位於 Amazon RDS 的中繼存放區來執行。透過指定中繼存放區位置來啟動所有額外的 Hive 叢集,其會共用此中繼存放區。