Amazon Athena Hortonworks コネクタ - Amazon Athena

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Athena Hortonworks コネクタ

Hortonworks 用の Amazon Athena コネクタを使用すると、Amazon Athena で Cloudera Hortonworks データプラットフォームに SQL クエリを実行できます。コネクタによって Athena SQL クエリは同等の HiveQL 構文に変換されます。

前提条件

制限事項

  • 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

マルチプレックスハンドラーのパラメータ

パラメータ 説明
$catalog_connection_string 必須。データベースインスタンスの接続文字列。環境変数には、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 コネクタは UIDPWD の 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 は集計型 ARRAYMAPSTRUCTUNIONTYPE をサポートしていません。集計型の列は、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 ファイルにあります) が含まれていることを認め、.com の LICENSE.txt GitHub ファイルに記載されているそれぞれのサードパーティライセンスの条件に同意したものとみなされます。

以下も参照してください。

JDBC ドライバの最新バージョン情報については、.com にある Hortonworks Hive コネクタの pom.xml ファイルを参照してください。 GitHub

このコネクタの詳細については、.com の該当するサイトを参照してください GitHub