翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Athena Hortonworks コネクタ
Hortonworks 用の Amazon Athena コネクタを使用すると、Amazon Athena で Cloudera Hortonworks
前提条件
Athena コンソールまたは AWS Serverless Application Repositoryを使用して AWS アカウント にコネクタをデプロイします。詳細については、データソースコネクタのデプロイまたはAWS Serverless Application Repository を使用したデータソースコネクタのデプロイを参照してください。
制限事項
-
DDL の書き込みオペレーションはサポートされていません。
-
マルチプレクサの設定では、スピルバケットとプレフィックスが、すべてのデータベースインスタンスで共有されます。
-
関連性のある Lambda 上限値。詳細については、AWS Lambda デベロッパーガイドの Lambda のクォータを参照してください。
規約
Hortonworks Hive コネクタに関連する用語を次に示します。
-
データベースインスタンス – オンプレミス、Amazon EC2、または Amazon RDS にデプロイされたデータベースの任意のインスタンス。
-
ハンドラー – データベースインスタンスにアクセスする Lambda ハンドラー。ハンドラーには、メタデータ用とデータレコード用があります。
-
メタデータハンドラー – データベースインスタンスからメタデータを取得する Lambda ハンドラー。
-
レコードハンドラー – データベースインスタンスからデータレコードを取得する Lambda ハンドラー。
-
複合ハンドラー — データベースインスタンスからメタデータとデータレコードの両方を取得する Lambda ハンドラー。
-
プロパティまたはパラメータ – ハンドラーがデータベース情報を抽出するために使用するデータベースプロパティ。これらのプロパティは Lambda の環境変数で設定します。
-
接続文字列 – データベースインスタンスへの接続を確立するために使用されるテキスト文字列。
-
カタログ — Athena AWS Glue に登録されている非カタログで、
connection_string
プロパティのプレフィックスとして必須です。 -
マルチプレックスハンドラー – 複数のデータベース接続を受け入れて使用することが可能な Lambda ハンドラー。
パラメータ
このセクションの Lambda 環境変数を使用して Hortonworks Hive コネクタを設定します。
接続文字列
次の形式の JDBC 接続文字列を使用して、データベースインスタンスに接続します。
hive://${
jdbc_connection_string
}
マルチプレックスハンドラーの使用
マルチプレクサーを使用すると、単一の Lambda 関数から複数のデータベースインスタンスに接続できます。各リクエストはカタログ名によりルーティングされます。Lambda では以下のクラスを使用します。
Handler | Class |
---|---|
複合ハンドラー | HiveMuxCompositeHandler |
メタデータハンドラー | HiveMuxMetadataHandler |
レコードハンドラー | HiveMuxRecordHandler |
マルチプレックスハンドラーのパラメータ
パラメータ | 説明 |
---|---|
$ |
必須。データベースインスタンスの接続文字列。環境変数には、Athena で使用されているカタログの名前をプレフィックスします。例えば、Athena に登録されたカタログが myhivecatalog の場合、環境変数の名前は myhivecatalog_connection_string になります。 |
default |
必須。デフォルトの接続文字列。この文字列は、カタログが lambda:${ AWS_LAMBDA_FUNCTION_NAME } の場合に使用されます。 |
以下に、2 つのデータベースインスタンス (デフォルト値の hive1
、および hive2
) をサポートする、Hive MUX Lambda 関数のプロパティ例を示します。
プロパティ | 値 |
---|---|
default |
hive://jdbc:hive2://hive1:10000/default?${Test/RDS/hive1} |
hive_catalog1_connection_string |
hive://jdbc:hive2://hive1:10000/default?${Test/RDS/hive1} |
hive_catalog2_connection_string |
hive://jdbc:hive2://hive2:10000/default?UID=sample&PWD=sample |
認証情報の提供
JDBC 接続文字列の中でデータベースのユーザー名とパスワードを指定するには、接続文字列のプロパティ、もしくは AWS Secrets Managerを使用します。
-
接続文字列 – ユーザー名とパスワードを、JDBC 接続文字列のプロパティとして指定できます。
重要
セキュリティ上のベストプラクティスとして、環境変数や接続文字列にハードコードされた認証情報を使用しないでください。ハードコーディングされたシークレットの移動については AWS Secrets Manager、『ユーザーガイド』の「ハードコーディングされたシークレットの移動先 AWS Secrets Manager」を参照してください。AWS Secrets Manager
-
AWS Secrets Manager— で Athena フェデレーテッドクエリ機能を使用するには AWS Secrets Manager、Lambda 関数に接続された VPC がインターネットにアクセスできるか
、Secrets Manager に接続するための VPC エンドポイントが必要です。 JDBC 接続文字列にはシークレットの名前を入力できます。 AWS Secrets Manager コネクタは、このシークレット名を Secrets Manager の
username
およびpassword
の値に置き換えます。Amazon RDS データベースインスタンスには、このサポートが緊密に統合されています。Amazon RDS を使用する場合は、 AWS Secrets Manager 認証情報のローテーションを使用することを強くお勧めします。データベースで Amazon RDS を使用していない場合は、認証情報を次の形式で JSON として保存します。
{"username": "${username}", "password": "${password}"}
シークレット名を含む接続文字列の例
次の文字列には、シークレット名 ${Test/RDS/hive1host}
が含まれています。
hive://jdbc:hive2://hive1host:10000/default?...&${Test/RDS/hive1host}&...
次の例のように、コネクタはシークレット名を使用し、シークレットを取得してユーザー名とパスワードを提供します。
hive://jdbc:hive2://hive1host:10000/default?...&UID=sample2&PWD=sample2&...
現在、Hortonworks Hive コネクタは UID
と PWD
の JDBC プロパティを認識します。
単一接続ハンドラーの使用
次の単一接続のメタデータハンドラーとレコードハンドラーを使用して、単一の Hortonworks Hive インスタンスに接続できます。
ハンドラーのタイプ | Class |
---|---|
複合ハンドラー | HiveCompositeHandler |
メタデータハンドラー | HiveMetadataHandler |
レコードハンドラー | HiveRecordHandler |
単一接続ハンドラーのパラメータ
パラメータ | 説明 |
---|---|
default |
必須。デフォルトの接続文字列。 |
単一接続ハンドラーでは、1 つのデータベースインスタンスがサポートされます。また、default
接続文字列パラメータを指定する必要があります。他のすべての接続文字列は無視されます。
Lambda 関数でサポートされる単一の Hortonworks Hive インスタンス用のプロパティ例を次に示します。
プロパティ | 値 |
---|---|
default |
hive://jdbc:hive2://hive1host:10000/default?secret=${Test/RDS/hive1host} |
スピルパラメータ
Lambda SDK は Amazon S3 にデータをスピルする可能性があります。同一の Lambda 関数によってアクセスされるすべてのデータベースインスタンスは、同じ場所にスピルします。
パラメータ | 説明 |
---|---|
spill_bucket |
必須。スピルバケット名。 |
spill_prefix |
必須。スピルバケットのキープレフィックス |
spill_put_request_headers |
(オプション) スピルに使用される Amazon S3 の putObject リクエスト (例:{"x-amz-server-side-encryption" :
"AES256"} ) における、リクエストヘッダーと値に関する JSON でエンコードされたマッピング。その他の可能なヘッダーについては、Amazon シンプルストレージサービス API PutObjectリファレンスのを参照してください。 |
サポートされるデータ型
次の表に、JDBC、Hortonworks Hive、および Arrow の間で対応するデータ型を示します。
JDBC | Hortonworks Hive | Arrow |
---|---|---|
ブール値 | ブール値 | Bit |
整数 | TINYINT | Tiny |
ショート | SMALLINT | Smallint |
整数 | INT | Int |
Long | BIGINT | Bigint |
フロート | float4 | Float4 |
ダブル | float8 | Float8 |
日付 | date | DateDay |
タイムスタンプ | timestamp | DateMilli |
文字列 | VARCHAR | Varchar |
バイト | bytes | Varbinary |
BigDecimal | 10 進数 | 10 進数 |
配列 | 該当なし (注記を参照) | リスト |
注記
現在、Hortonworks Hive は集計型 ARRAY
、MAP
、STRUCT
、UNIONTYPE
をサポートしていません。集計型の列は、SQL における VARCHAR
列のように扱われます。
パーティションと分割
パーティションは、コネクタを分割する方法を決定するために使用されます。Athena は varchar
型の合成列を作成し、コネクタが分割を生成できるようにするために、テーブルに対するパーティションのスキームを示します。コネクタは実際のテーブル定義を変更しません。
パフォーマンス
Hortonworks Hive は静的パーティションをサポートしています。Athena Hortonworks Hive コネクタは、これらのパーティションからデータを並列に取得できます。パーティション分散が一様で非常に大きなデータセットをクエリする場合は、静的パーティショニングの使用を強くお勧めします。列のサブセットを選択すると、クエリランタイムが大幅に短縮され、スキャンされるデータが減ります。Hortonworks Hive コネクタは同時実行によるスロットリングに強いです。
Athena Hortonworks Hive コネクタは述語のプッシュダウンを実行して、クエリによってスキャンされるデータを減少させます。スキャンされるデータ量を削減し、クエリ実行のランタイムを短縮するために、LIMIT
句、単純な述語、および複雑な式はコネクタにプッシュダウンされます。
LIMIT 句
LIMIT N
ステートメントにより、クエリによってスキャンされるデータが削減されます。LIMIT N
プッシュダウンを使用すると、コネクタは N
行のみを Athena に返します。
述語
述語は、ブール値に照らして評価し、複数の条件に基づいて行をフィルタリングする SQL クエリの WHERE
句内の式です。Athena Hortonworks Hive コネクタは、これらの式を組み合わせて Hortonworks Hive に直接プッシュすることで、機能を強化し、スキャンされるデータ量を削減できます。
次の Athena Hortonworks Hive コネクタ演算子は、述語のプッシュダウンをサポートしています。
-
ブーリアン: AND、OR、NOT
-
等値: EQUAL、NOT_EQUAL、LESS_THAN、LESS_THAN_OR_EQUAL、GREATER_THAN、GREATER_THAN_OR_EQUAL、IS_NULL
-
Arithmetic: 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;
ライセンス情報
このコネクタを使用することにより、サードパーティ製コンポーネント (そのリストはこのコネクタの pom.xml
以下も参照してください。
JDBC ドライバの最新バージョン情報については、.com にある Hortonworks Hive コネクタの pom.xml
このコネクタの詳細については、.com の該当するサイトを参照してください。