Amazon Athena Cloudera Hive 連接器 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon Athena Cloudera Hive 連接器

Cloudera Hive 的 Amazon Athena 連接器可讓 Athena 在 Cloudera Hive Hadoop 分佈上執行SQL查詢。連接器會將您的 Athena SQL查詢轉換為其同等的 HiveQL 語法。

此連接器不會使用 Glue Connections 來集中 Glue 中的組態屬性。連線組態是透過 Lambda 完成。

必要條件

限制

  • 不支援寫入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

多工處理常式參數

參數 描述
$catalog_connection_string 必要。資料庫執行個體連接字串。在環境變數前面加上 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 函數的 應具有網際網路存取VPC端點,以連接至 Secrets Manager。

將秘密的名稱放入您的JDBC連線字串 AWS Secrets Manager 中。連接器將秘密名稱取代為 Secrets Manager 中的 usernamepassword 值。

帶有秘密名稱的連接字串範例

以下字串具有秘密名稱 ${Test/RDS/hive1}

hive://jdbc:hive2://hive1:10000/default?...&${Test/RDS/hive1}&...

連接器會使用秘密名稱來擷取秘密並提供使用者名稱和密碼,如下列範例所示。

hive://jdbc:hive2://hive1:10000/default?...&UID=sample2&PWD=sample2&...

目前,Cloudera Hive 連接器可識別 UIDPWD 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 不支援彙總類型 ARRAYMAPSTRUCTUNIONTYPE。彙總類型的資料欄會在 中視為資料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 檔案中找到,並同意 .LICENSEtxt 檔案上提供的個別第三方授權中的條款 GitHub。

其他資源

如需最新的JDBC驅動程式版本資訊,請參閱 Cloudera Hive 連接器 on.com 的 pom.xml 檔案 GitHub。

如需此連接器的詳細資訊,請造訪對應的網站 on.com GitHub。