Amazon Web Services ブログ

Amazon Athena を Apache Hive メタストアに接続し、ユーザー定義関数を使用する

Amazon Athena は、標準 SQL を使用して Amazon S3 のデータを簡単に分析できるインタラクティブなクエリサービスです。Athena はサーバーレスであるため、インフラストラクチャの管理は不要であり、実行したクエリにのみ課金されます。この投稿では、現在プレビュー中である2つの新しい機能、Apache Hive Metastore への接続と、ユーザー定義関数の使用について詳しく説明しています。これらは本日から使い始めることができます。

Athena を自分の Apache Hive Metastore に接続する

Hive Metastore を、自分のビッグデータ環境に共通のメタデータカタログとして使っているお客様が複数いらっしゃいます。このようなお客様は、Amazon EC2Amazon EMR クラスター上で Apache Spark、Presto、Apache Hive を実行していて、共通カタログとして Hive Metastore を自身でホストしています。またAWS は、完全に管理されたカタログで、 Hive メタストアをドロップインで置き換える AWS Glue Data Catalog も提供しています。この記事がリリースされた時点で、Athena の Data Catalog に加えて Hive メタストアも利用できます。Athena によって、既存の Data Catalog に加えて複数の Hive メタストアに接続できます。

ご自身でホストしている Hive メタストアに接続するには、メタストアのコネクターが必要です。このコネクターの実装リファレンスをダウンロードできます。コネクターは、アカウントの Lambda の機能の1つとして動作します。この実装の現在のバージョンでは、SELECT クエリのみサポートしています。DDL のサポートは、基本的なメタデータ構文に制限されています。詳しくは、この機能の「考慮事項と制約事項」をご覧ください。以前の実装リファレンスを例として使って Hive メタストアのコネクターを作ることもできます。Lambda の 1機能として実装をデプロイし、続いて Athena と一緒に使用します。この機能について詳しくは、「Using Athena Data Connector for External Hive Metastore (Preview)」のドキュメントをご覧ください。

Athena でユーザー定義関数を使用する

Athena は、カスタムユーザー定義スカラー関数 (UDF) をプレビューサポートしています。UDF によって、関数を作成してSQL クエリの中で呼び出すことができます。スカラー UDF は一行ずつ適用され、1つのカラムの値を返します。UDF 自体に対するリモートコールに紐づくパフォーマンス上の影響を制限するために、Athena はスカラー UDF を複数行の一括処理で呼び出します。

この記事の最新版がリリースされる時点では、Athena Query Federation SDK を使用して独自の関数を定義し、SQL クエリの中でインライン呼び出しが可能でます。これにより、クエリ中で行の値を圧縮または展開したり、カラムから個人を特定可能な情報 (PII) を洗い落としたり、日時を別の形式に変換したり、画像のメタデータを読み込んだり、プロプラエタリなカスタムコードを実行したりできます。また、クエリのSELECTFILTER 両方のフェーズで UDF を実行でき、同じクエリーで複数の UDF を呼び出すことができます。

UDF について詳しくは、マニュアルを参照してください。一般的な UDF の実装例については、GitHub のレポジトリをご覧ください。Athena Query Federation SDK を使用した関数の作成については、こちらのリンクを訪問してください。

プレビュー中の機能をテストする

AmazonAthenaPreviewFunctionality ワークグループから発した Athena クエリは、すべてプレビュー中のテストクエリとして評価されます。

Athena API または Athena コンソールを使用して、新しいワークグループ、 AmazonAthenaPreviewFunctionality を作成してください。詳細については、「ワークグループの作成」を参照してください。

プレビュー中の機能を使用する場合は、以下を考慮することが重要です。

ワークグループ名を編集しないでください。Amazon CloudWatch メトリクスやリクエスタ支払いの有効化など、ワークグループの他の属性は変更できます。Athena コンソールや JDBC/ODBC ドライバー、または API を使用して、テストクエリを送信できます。テストクエリを送信するときは、AmazonAthenaPreviewFunctionality ワークグループを指定してください。

us-east-1 リージョンにおいてのみ、プレビュー中の機能を利用できます。他のリージョンで Athena を使用し、AmazonAthenaPreviewFunctionality を使ってクエリを送信してもクエリーは失敗します。プレビューモードでは、リージョンをまたいだ呼び出しはサポートされていません。

プレビュー中は、統合データソースからスキャンしたデータに対しては課金されません。しかし、S3 からスキャンしたデータに対しては、 Athena の標準レートで課金されます。さらに、S3 や AWS LambdaAWS GlueAmazon SageMakerAWS SAMなど、Athena と一緒に使用した AWS のサービスに対しても標準レートで課金されます。たとえば、ストレージやリクエスト、リージョン間データ転送に対しては、S3 のレートで課金されます。デフォルトでは、選択した S3 のバケットにクエリの結果が格納され、標準の S3 のレートで課金されます。Lambda を使用した場合には、お客様の関数のリクエスト数と時間 (コードの実行に要した時間) に基づいて課金されます。

お客様の生産ワークロードを AmazonAthenaPreviewFunctionality に組み込むことはお勧めできません

プレビューのワークグループと、アカウント内の他のワークグループとでは、クエリのパフォーマンスが異なります。さらに、新しい機能やバグフィックスは、後方互換性を持たない可能性があります。

まとめ

まとめとして、本日プレビュー版としてリリースされた、Athena の新しい機能を2つご紹介します。

メタデータ管理のために Apache Hive を使っていて、これまで Athena を使えなかったお客様でも、Hive メタストアを Athena に接続してクエリを実行できるようになりました。また、Athena の Query Federation SDK を使用して独自の関数を定義し、Athena の SQL クエリから呼び出せるようになりました。

どちらの機能も、AWS の us-east-1 リージョンでプレビュー版として利用できます。Athena に関するよくある質問の手順に従って、プレビューを始めましょう。 Athena-feedback@amazon.com 宛にフィードバックをお待ちしております。

 


著者について

Janak Agarwal は AWS における Athena のプロダクトマネージャーです。