本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Athena Cloudera Hive 連接器
Cloudera Hive 的 Amazon Athena 連接器可讓 Athena 在 Cloudera Hive
此連接器不會使用 Glue Connections 來集中 Glue 中的組態屬性。連線組態是透過 Lambda 完成。
必要條件
使用 Athena 主控台或 AWS Serverless Application Repository,將連接器部署到您的 AWS 帳戶 。如需詳細資訊,請參閱 建立資料來源連線 或 使用 AWS Serverless Application Repository 部署資料來源連接器。
使用此連接器之前,請設定 VPC和安全群組。如需詳細資訊,請參閱VPC 為資料來源連接器或 AWS Glue 連線建立。
限制
-
不支援寫入DDL操作。
-
在多工器設定中,在所有資料庫執行個體之間共用溢出儲存貯體和字首。
-
任何相關的 Lambda 限制。如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 Lambda 配額。
條款
下列術語與 Cloudera Hive 連接器相關。
-
資料庫執行個體 – 部署在內部部署、Amazon EC2或 Amazon 上的任何資料庫執行個體RDS。
-
處理常式 - 存取資料庫執行個體的 Lambda 處理常式。處理常式可以用於中繼資料或資料記錄。
-
中繼資料處理常式 - 從資料庫執行個體中擷取中繼資料的 Lambda 處理常式。
-
記錄處理常式 - 從資料庫執行個體中擷取資料記錄的 Lambda 處理常式。
-
複合處理常式 - 從資料庫執行個體中擷取中繼資料和資料記錄的 Lambda 處理常式。
-
屬性或參數 - 處理常式用來擷取資料庫資訊的資料庫屬性。您可以將這些屬性設定為 Lambda 環境變數。
-
連接字串 - 用來建立資料庫執行個體連線的文字字串。
-
目錄 – 向 Athena 註冊的非AWS Glue 目錄,是
connection_string
屬性的必要字首。 -
多工處理常式 - 可以接受和使用多個資料庫連接的 Lambda 處理常式。
參數
使用本節中的參數來設定 Cloudera Hive 連接器。
連接字串
使用下列格式的JDBC連線字串來連線至資料庫執行個體。
hive://${
jdbc_connection_string
}
使用多工處理常式
您可以使用多工器透過單一 Lambda 函數連接到多個資料庫執行個體。按目錄名稱路由請求。在 Lambda 中使用下列類別。
處理常式 | 類別 |
---|---|
複合處理常式 | HiveMuxCompositeHandler |
中繼資料處理常式 | HiveMuxMetadataHandler |
記錄處理常式 | HiveMuxRecordHandler |
多工處理常式參數
參數 | 描述 |
---|---|
$ |
必要。資料庫執行個體連接字串。在環境變數前面加上 Athena 中使用的目錄名稱。例如,如果向 Athena 註冊的目錄為 myhivecatalog ,則環境變數名稱為 myhivecatalog_connection_string 。 |
default |
必要。預設的連接字串。當目錄為 時,會使用此字串lambda:${ AWS_LAMBDA_FUNCTION_NAME } 。 |
下列範例屬性適用於支援兩個資料庫執行個體的 Hive MUX Lambda 函數: hive1
(預設值) 和 hive2
。
屬性 | Value |
---|---|
default |
hive://jdbc:hive2://hive1:10000/default?${Test/RDS/hive1} |
hive2_catalog1_connection_string |
hive://jdbc:hive2://hive1:10000/default?${Test/RDS/hive1} |
hive2_catalog2_connection_string |
hive://jdbc:hive2://hive2:10000/default?UID=sample&PWD=sample |
提供憑證
若要在JDBC連線字串中提供資料庫的使用者名稱和密碼,Cloudera Hive 連接器需要來自 的秘密 AWS Secrets Manager。若要搭配 Athena 聯合查詢功能使用 AWS Secrets Manager,VPC連接至 Lambda 函數的 應具有網際網路存取
將秘密的名稱放入您的JDBC連線字串 AWS Secrets Manager 中。連接器將秘密名稱取代為 Secrets Manager 中的 username
和 password
值。
帶有秘密名稱的連接字串範例
以下字串具有秘密名稱 ${Test/RDS/hive1}
。
hive://jdbc:hive2://hive1:10000/default?...&${Test/RDS/hive1}&...
連接器會使用秘密名稱來擷取秘密並提供使用者名稱和密碼,如下列範例所示。
hive://jdbc:hive2://hive1:10000/default?...&UID=sample2&PWD=sample2&...
目前,Cloudera Hive 連接器可識別 UID
和 PWD
JDBC 屬性。
使用單一連接處理常式
您可以使用下列單一連接中繼資料和記錄處理常式來連接至單一 Cloudera Hive 執行個體。
處理常式類型 | 類別 |
---|---|
複合處理常式 | HiveCompositeHandler |
中繼資料處理常式 | HiveMetadataHandler |
記錄處理常式 | HiveRecordHandler |
單一連接處理常式參數
參數 | 描述 |
---|---|
default |
必要。預設的連接字串。 |
單一連接處理常式支援一個資料庫執行個體,並且必須提供 default
連接字串參數。忽略所有其他連接字串。
下列範例屬性適用於 Lambda 函數所支援的單一 Cloudera Hive 執行個體。
屬性 | Value |
---|---|
預設 | hive://jdbc:hive2://hive1:10000/default?secret=${Test/RDS/hive1} |
溢出參數
Lambda SDK可以將資料溢灑到 Amazon S3。由相同 Lambda 函數存取的所有資料庫執行個體溢出到相同的位置。
參數 | 描述 |
---|---|
spill_bucket |
必要。溢出儲存貯體名稱。 |
spill_prefix |
必要。溢出儲存貯體金鑰字首。 |
spill_put_request_headers |
(選用) JSON 用於溢出之 Amazon S3 putObject 請求的請求標頭和值編碼映射 (例如 {"x-amz-server-side-encryption" : "AES256"} )。如需其他可能的標頭,請參閱《Amazon Simple Storage Service API參考PutObject》中的 。 |
支援的資料類型
下表顯示 JDBC、Cloudera Hive 和 Arrow 的對應資料類型。
JDBC | Cloudera Hive | Arrow |
---|---|---|
Boolean | Boolean | 位元 |
Integer | TINYINT | Tiny |
Short | SMALLINT | Smallint |
Integer | INT | Int |
Long | BIGINT | Bigint |
float | float4 | Float4 |
Double | float8 | Float8 |
日期 | 日期 | DateDay |
時間戳記 | timestamp | DateMilli |
字串 | VARCHAR | Varchar |
位元組 | 位元組 | Varbinary |
BigDecimal | Decimal (小數) | Decimal (小數) |
ARRAY | N/A (請參閱備註) | 清單 |
注意
目前,Cloudera Hive 不支援彙總類型 ARRAY
、MAP
、STRUCT
或 UNIONTYPE
。彙總類型的資料欄會在 中視為資料VARCHAR
欄SQL。
分割區和分隔
分割區用於決定如何產生連接器的分割。Athena 建構了類型 varchar
的合成資料欄,表示資料表的分割結構,以幫助連接器產生分割。連接器不會修改實際的資料表定義。
效能
Cloudera Hive 支援靜態分割區。Athena Cloudera Hive 連接器可以平行地從這些分割區中擷取資料。如果您想要查詢具有統一分割區分佈的非常大型的資料集,強烈建議使用靜態分割。Cloudera Hive 連接器對由於並行而導致的限流保有彈性。
Athena Cloudera Hive 連接器執行述詞下推,以減少查詢掃描的資料。LIMIT
子句、簡單述詞和複雜的表達式會下推至連接器,以減少掃描的資料量並縮短查詢執行時間。
LIMIT 子句
LIMIT N
陳述句可減少查詢掃描的資料。透過 LIMIT N
下推,連接器只會向 Athena 傳回 N
個資料列。
述詞
述詞是SQL查詢子WHERE
句中的表達式,可評估為布林值,並根據多個條件篩選資料列。Athena Cloudera Hive 連接器可以結合這些表達式,並將它們直接推送到 Cloudera Hive,以增強功能並減少掃描的資料量。
下列 Athena Cloudera Hive 連接器運算子支援述詞下推:
-
布林值:AND、OR、 NOT
-
等式:EQUAL、NOT_EQUAL、LESS_THAN、LESS_THAN_OR_EQUAL、GREATER_THAN、GREATER_THAN_OR_EQUAL、IS_NULL
-
算術:ADD、SUBTRACT、MULTIPLY、DIVIDE、MODULUS、 NEGATE
-
其他:LIKE_PATTERN、IN
合併下推範例
如需增強的查詢功能,請合併下推類型,如以下範例所示:
SELECT * FROM my_table WHERE col_a > 10 AND ((col_a + col_b) > (col_c % col_d)) AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%') LIMIT 10;
傳遞查詢
Cloudera Hive 連接器支援傳遞查詢。傳遞查詢使用資料表函數,將您的完整查詢向下推送至資料來源以進行執行。
若要搭配 Cloudera Hive 使用傳遞查詢,您可以使用下列語法:
SELECT * FROM TABLE( system.query( query => '
query string
' ))
下列範例查詢會將查詢下推至 Cloudera Hive 中的資料來源。查詢會選取customer
資料表中的所有資料欄,將結果限制為 10。
SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer LIMIT 10' ))
授權資訊
使用此連接器,即表示您確認包含第三方元件,該元件的清單可在此連接器的 pom.xml
其他資源
如需最新的JDBC驅動程式版本資訊,請參閱 Cloudera Hive 連接器 on.com 的 pom.xml
如需此連接器的詳細資訊,請造訪對應的網站