Amazon Web Services ブログ

New – Apache Spark 対応 Amazon Athena

Jeff Barr が 2016 年に初めて Amazon Athena を発表して以来、データのやり取りに対する私の見方は変化しました。Amazon Athena では、Athena を使用したテーブル作成、コネクタによるデータのロード、ANSI SQL 基準を採用するクエリなどをする際、わずか数ステップでデータを操作できます。

金融サービス、ヘルスケア、小売などのさまざまな業界では、時代の変化とともに、さまざまな形式やサイズのデータに対し、より複雑な分析を実行する必要が出てきました。複雑なデータを容易に分析するため、企業はApache Sparkを採用しました。Apache Spark は、あらゆるサイズのデータに対して高速な分析ワークロードが実行可能な、高い利用率を誇るオープンソースの分散処理システムです。

しかし、インタラクティブなアプリケーションでApache Spark を実行するインフラストラクチャを構築することは簡単ではありません。お客様は、アプリケーションでインフラストラクチャのプロビジョニング、構成、および保守を行う必要があります。アプリケーションの起動が遅くなったり、アイドルコストが発生したりするのを避けるため、最適なチューニングリソースが必要です。

Apache Spark 対応 Amazon Athena のご紹介
11 月 30 日、 Apache Spark 対応 Amazon Athena について発表できたことを嬉しく思います。本機能により、Apache Spark ワークロードを実行したり、Athena でデータ処理するためのインターフェイスとして Jupyter Notebook を使用したり、Athena API を使用して Spark アプリケーションをプログラムとして操作できるようになります。インフラストラクチャを手動でプロビジョニングすることなく、Apache Spark を 1 秒以内に起動することが可能です。

以下に概略をまとめました。

Apache Spark 対応 Amazon Athena のクイックプレビュー

機能の仕組み
Apache Spark 対応 Amazon Athena はサーバーレスであるため、Apache Spark 実行する際、リソースをプロビジョニングおよび保守せずとも、インタラクティブなデータ探索を実行し、洞察を得ることができるというメリットがあります。本機能により、顧客はNotebookで Athena コンソールから直接、または API を使用し、プログラムとして Apache Spark アプリケーションを構築できるようになりました。

次の図は、この機能の仕組みを説明しています。

Apache Spark 対応 Amazon Athena の仕組み

Athena コンソールでは、Jupyter Notebookを使用して Python でNotebookを操作したり、Spark アプリケーションを実行したりできるようになりました。Jupyter Notebookを使用すると、ユーザーはコンテキストを切り替えることなく、Sparkアプリケーションでさまざまなソースからデータをクエリしたり、複数の計算やデータの視覚化することが可能となります。

Amazon Athena は AWS Glue データカタログと統合されているため、お客様は Amazon S3 のデータなど、 AWS Glue データカタログのあらゆるデータソースを操作できます。これにより、お客様は、データを分析および視覚化してデータを探索し、機械学習パイプラインのデータセットを準備するためのアプリケーションを構築する際の利便性が広がります。

デモプレビューセクションでご説明したように、Apache Spark エンジンを実行するワークグループの初期化では、インタラクティブなワークロードのリソースの実行の所要時間は 1 秒以下です。これは、Apache Spark 対応 Amazon Athena で Firecracker という軽量のマイクロ仮想マシンを使用しているためです。起動時間は短くなり、リソースのウォームプールを維持する必要がなくなります。これは、Apache Spark 実行のためのリソースを準備せずに、インタラクティブなデータ探索を実行して洞察を得たいと考えるお客様にとって、役立つものです。

Apache Spark 対応 Amazon Athena を使ってみよう
それでは、Apache Spark 対応 Amazon Athena の利用方法をご紹介します。ここでは、この機能の利用方法を段階的にご説明します。

最初のステップは、ワークグループの作成です。Athena の場合、ワークグループを作成しておくと、ユーザーとアプリケーション間でワークロードを分けるのに役立ちます。

ワークグループ作成では、Athena ダッシュボードから [ワークグループの作成] を選択します。

「ワークグループの作成」を選択します

次のページでは、このワークグループの名称と説明をご紹介します。

ワークグループの作成

同じページで、Athena のエンジンとして Apache Spark を選択できます。さらに、Jupyter Notebook 内で使用するための適切な権限を持つ サービスロールも指定する必要があります。次に、「サンプル Notebook を有効にする」をチェックします。これにより、Athena 内で Apache Spark を簡単に使い始めることができます。また、Athena が管理する Jupyter Notebook を暗号化するか、AWS Key Management Service (AWS KMS)で設定したキーを使用するかを選択できます。

その後、Jupyter Notebook の計算結果を保存する Amazon Simple Storage Service (Amazon S3) バケットを定義します。このワークグループのすべての構成を確認したら、[ワークグループの作成] を選択します。

計算結果設定の構成

これにより、Athena ですでに作成されたワークグループが表示されます。

新規作成したワークグループを選択

このワークグループの詳細を確認する場合は、ワークグループからリンクを選択します。このワークグループの作成時に[サンプル Notebook の有効化]にチェックを入れたので、Jupyter Notebook を使って簡単に始められます。Amazon Athena では、既存のNotebook をインポートすることで柔軟にお使いいただけます。[ファイルのインポート] でノートPCからアップロードしたり、[Notebook の作成] を選択して新規 Notebook を最初から作成したりできます。

Notebook の例はワークグループ内に保存されています

Jupyter Notebook の例を選択すると、自分のApache Spark アプリケーションを構築できます。

Jupyter Notebook を実行すると、ワークグループ内でセッションが自動作成されます。その後、Jupyter Notebook 内で計算を実行するたびに、すべての結果がセッションに記録されます。この方法では、[計算 ID] を選択すると、Athena により各計算を確認するためのすべての情報が提供され、[計算の詳細] ページに移動します。ここで、計算のコード結果も確認できます。

計算のコードと結果を確認する

このセッションでは、コーディネーターサイズエグゼキューターサイズは、デフォルトで 1 データ処理ユニット (DPU) で調整できます。DPU は、 4 つの仮想 CPU と 16 GB の RAM で構成されています。より大きな DPU に変更すると、複雑な計算を行うタスクをより速く処理できるようになります。

セッションパラメーターの構成

プログラム API アクセス
Athena コンソールの使用に加え、プログラムアクセスを使用して Athena 内の Spark アプリケーションの操作も可能となります。たとえば、create-work-group コマンドを使用してワークグループを作成したり、create-notebookを使用して Notebook を起動したり、 start-session を使用して Notebook セッションを実行したりできます。

プログラムアクセスを利用すると、Jupyter Notebook を開かずにレポートの作成やデータの計算などのコマンドを実行できるため、便利です。

以前に作成した Jupyter Notebook では、AWS CLI で次のコマンドを実行してセッションを開始できます。

$> aws athena 開始セッション\
    --ワークグループ <WORKGROUP_NAME>\
    --engine-configuration '{"CoordinatorDPUSize」: 1,「maxConcurrentDPU」: 20,「DefaultExecutorDPUSize」: 1,「AdditionalConfigs」: {"NotebookID」:」<NOTEBOOK_ID>「}}'
    -ノートブックバージョン「Jupyter 1」
    --説明「CLIよりセッションを開始」

{
    「セッション ID」:」<SESSION_ID>「,
    「状態」:「作成済み」
}

これで、計算実行開始APIを使用して計算を実行できます。

$ aws athena 開始-計算-実行\
    --セッションID = <SESSION_ID>
    --「デモ」の説明
    --コードブロック「印刷 (5+6)」

{
    「計算実行 ID」:「<計算_実行_ID>」,
    「状態」:「作成中」
}

--code-block フラグによりてインラインでコードを使用するだけでなく、次のコマンドを使用して Python ファイルからの情報を手渡すこともできます。

$ aws athena 開始-計算-実行\
    --セッションID = <SESSION_ID>
    --「デモ」の説明
    --コードブロックファイル://<PYTHON ファイル>

{
    「計算実行 ID」:「<計算_実行_ID>」,
    「状態」:「作成中」
}

料金と利用可能なリージョン
Apache Spark 対応Amazon Athena は現在、米国東部 (オハイオ)、米国東部 (バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (東京)、欧州 (アイルランド) の AWS リージョンでご利用いただけます。この機能を使用すると、データ処理ユニットまたは DPU によって定義された 1 時間あたりのコンピューティング使用量に基づき、課金されます。詳細については、こちらの料金ページを参照してください。

この機能を利用するには、Apache Spark対応Amazon Athena を参照してください。文書で詳細を確認し、料金を理解し、ステップバイステップのチュートリアルに従ってください。

構築がうまくいきますように。

Donnie

原文はこちらです。