Amazon Athena で Apache Spark を開始する - Amazon Athena

Amazon Athena で Apache Spark を開始する

Amazon Athena で Apache Spark の使用を開始するには、最初に Spark が有効になっているワークグループを作成する必要があります。ワークグループに切り替えた後、ノートブックを作成するか、既存のノートブックを開くことができます。Athena でノートブックを開くと、そのノートブックに対して新しいセッションが自動的に開始され、Athena ノートブックエディタで直接操作できます。

注記

ノートブックを作成する前に、必ず Spark 対応のワークグループを作成してください。

ステップ 1: Athena で Spark 対応のワークグループを作成する

Athena のワークグループを使用して、ユーザー、チーム、アプリケーション、またはワークロードをグループ化し、コストを追跡できます。Amazon Athena で Apache Spark を使用するには、Spark エンジンを使用する Amazon Athena ワークグループを作成します。

注記

Apache Spark 対応のワークグループでは Athena ノートブックエディターを使用できますが、Athena クエリエディターを使用することはできません。Athena SQL ワークグループのみが、Athena クエリエディターを使用できます。

Athena で Spark 対応のワークグループを作成するには
  1. https://console.aws.amazon.com/athena/ で Athena コンソールを開きます。

  2. コンソールのナビゲーションペインが表示されない場合は、左側の展開メニューをクリックします。

    展開メニューを選択します。
  3. ナビゲーションペインで、[Global networks] (グローバルネットワーク) を選択します。

  4. [Workgroups] (ワークグループ) ページで、[Create workgroup] (ワークグループを作成する) をクリックします。

  5. [Workgroup name] (ワークグループ名) には、Apache Spark ワークグループの名前を入力します。

  6. (オプション) [Description] (説明) で、ワークグループの説明を入力します。

  7. [Analytics engine] (アナリティクスエンジン) には、[Apache Spark] を選択してください。

    注記

    ワークグループを作成した後は、ワークグループの分析エンジンのタイプを変更することはできません。たとえば、Athena エンジンのバージョン 3 のワークグループを PySpark エンジンのバージョン 3 のワークグループに変更することはできません。

  8. このチュートリアルでは、[Turn on example notebook] (ノートブックのサンプルを有効にする) を選択します。このオプション機能では、example-notebook-random_string という名前のノートブックのサンプルをワークグループに追加し、ノートブックがアカウント内の特定のデータベースやテーブルを作成、表示、削除するために使用する AWS Glue に関連するアクセス許可と、データセットのサンプルの Amazon S3 での読み込みアクセス許可を追加します。追加されたアクセス許可を確認するには、[View additional permissions details] (追加のアクセス許可の詳細を表示) を選択します。

    注記

    ノートブックのサンプルを実行すると、追加コストが発生する可能性があります。

  9. [計算結果の設定] で、次のオプションから選択します。

    • 新しい S3 バケットを作成 - このオプションでは、計算の結果用 Amazon S3 バケットがアカウントに作成されます。バケット名は形式 account_id-region-athena-results-bucket-alphanumeric_id で、ACL を無効にする、パブリックアクセスをブロックする、バージョニングを無効にする、バケット所有者を強制するなどの設定を使用しています。

    • 既存の S3 の場所を選択 - このオプションでは、次の操作を行います。

      • 検索ボックスに既存の場所への S3 パスを入力するか、[Browse S3] (S3 の参照) を選択してリストからバケットを選択します。

        注記

        Amazon S3 の既存の場所を選択するときは、その場所にスラッシュ (/) を追加しないでください。これを行うと、計算の詳細ページの計算結果の場所へのリンクが間違ったディレクトリを指すようになります。このような場合、ワークグループの結果の場所を編集して末尾のスラッシュを削除してください。

      • (オプション) [View] (表示) を選択して Amazon S3 コンソールの [Buckets] (バケット) ページを開き、選択した既存のバケットに関する詳細情報を表示できます。

      • (オプション) [Expected bucket owner] (想定されるバケット所有者) に、クエリ結果の出力場所バケットの所有者になると想定されている AWS の ID を入力します。可能な限り、追加のセキュリティ対策としてこのオプションを選択することをお勧めします。バケット所有者のアカウント ID が指定した ID と一致しない場合、バケットに出力できません。詳細については、「Amazon S3 ユーザーガイド」の「バケット所有者条件によるバケット所有者の確認」を参照してください。

      • (オプション) 計算結果の場所が別のアカウントによって所有されており、クエリ結果に対する完全な制御を他のアカウントに許可したい場合、[Assign bucket owner full control over query results] (クエリ結果を完全に制御できるバケット所有者を割り当てる) を選択します。

  10. (オプション) クエリ結果を暗号化するには、[クエリ結果の暗号化] を選択します。

    • [暗号化タイプ] で、以下のいずれかのオプションを選択します。

      • SSE_S3 – このオプションは、Amazon S3 で管理された暗号化キーによるサーバー側の暗号化 (SSE) を使用します。

      • SSE_KMS – このオプションは、AWS KMS で管理されたキーによるサーバー側の暗号化 (SSE) を使用します。

        [AWS KMS キーを選択] で、次のいずれかのオプションを選択します。

        • AWS 所有キーを使用する – AWS KMS キーは AWS によって所有および管理されます。このキーは追加料金なしで使用されます。

        • 別の AWS KMS キーを選択する (アドバンスト) – このオプションでは、次のいずれかを実行します。

          • 既存のキーを使用するには、検索ボックスを使用して AWS KMS を選択するか、キーの ARN を入力します。

          • AWS KMS コンソールでキーを作成するには、[AWS KMS キーを作成する] を選択します。実行ロールには、作成したキーを使用するアクセス許可が必要です。KMS コンソールでキーを作成し終えたら、Athena コンソールの [ワークグループを作成] ページに戻り、[AWS KMS キーを選択するか、ARN を入力] 検索ボックスを使用して、今作成したキーを選択します。

      重要

      ワークグループの AWS KMS key を変更しても、更新前に管理されていたノートブックは引き続き古い KMS キーを参照します。更新後に管理されるノートブックでは、新しい KMS キーを使用します。以前のノートブックを新しい KMS キーを参照するように更新するには、以前のノートブックをそれぞれエクスポートしてからインポートします。以前のノートブックの参照を新しい KMS キーに更新する前に以前の KMS キーを削除すると、古いノートブックは復号化できなくなり、復元できなくなります。

      この動作は、KMS キーのわかりやすい名前であるエイリアスの更新にも当てはまります。KMS キーエイリアスを新しい KMS キーを指すように更新すると、エイリアスの更新前に管理されていたノートブックでは引き続き古い KMS キーを参照し、エイリアスの更新後に管理されたノートブックでは新しい KMS キーを使用します。KMS キーまたはエイリアスを更新する前に、これらの点を考慮してください。

  11. [追加設定] で、[デフォルトを使用] を選択します。このオプションは Spark 対応のワークグループの使用を開始するのに役立ちます。このデフォルトを使用すると、Athena は IAM ロールと計算結果の場所を Amazon S3 に自動的に作成します。IAM ロールの名前と作成する S3 バケットの場所は、[Additional configurations] (追加設定) の見出しの下にあるボックスに表示されます。

    デフォルトを使用しない場合は、(オプション) 独自のワークグループ設定を指定します。 セクションの手順に進んでワークグループを手動で設定します。

  12. (オプション) [Tags] (タグ) - このオプションを使用して、ワークグループにタグを追加します。詳細については、「Athena リソースにタグ付けする」を参照してください。

  13. [Create workgroup] (ワークグループの作成) を選択します。ワークグループが正常に作成されたことを知らせるメッセージが表示され、そのワークグループはワークグループのリストに表示されます。

(オプション) 独自のワークグループ設定を指定します。

ノートブック独自の IAM ロールと計算結果の場所を指定する場合は、このセクションの手順に従います。[Additional configurations] (その他の設定) オプションに [Use defaults] (デフォルトを使用) を選択した場合は、このセクションを飛ばして直接 ステップ 2: ノートブックエクスプローラーを開いてワークグループを切り替える に進んでください。

以下の手順は、前のセクションの [To create a Spark enabled workgroup in Athena] (Athena で Spark 対応のワークグループを作成するには) の手順 1~9 を完了していることを前提としています。

独自のワークグループ設定を指定するには
  1. 独自の IAM ロールを作成または使用したり、ノートブックの暗号化を設定したりする場合は、[IAM role configuration] (IAM ロール設定) を拡張してください。

    • [Athena を承認するサービスロール] で、以下のいずれかのオプションを選択します。

      • 新しいサービスロールを作成および使用する – このオプションを選択すると、Athena はサービスロールを自動的に作成します。ロールを付与するアクセス許可を確認するには、[View permission details] (アクセス許可の詳細を表示) を選択します。

      • 既存のサービスロールを使用する – ドロップダウンメニューから既存のロールを選択します。選択するロールには、最初のオプションでアクセス許可を含める必要があります。ノートブック対応ワークグループのアクセス許可の詳細については、「Spark 対応ワークグループをトラブルシューティングする」を参照してください。

    • [Notebook and calculation code encryption key management] (ノートブックと計算コードの暗号化キーを管理) には、次のいずれかのオプションを選択します。

      • AWS 所有キーを使用して暗号化する (デフォルト) – AWS KMS キーは AWS によって所有および管理されます。このキーは追加料金なしで使用されます。

      • 独自の AWS KMS キーを使用して暗号化する – このオプションでは、次のいずれかを実行します。

        • 既存のキーを使用するには、検索ボックスを使用して AWS KMS を選択するか、キーの ARN を入力します。

        • AWS KMS コンソールでキーを作成するには、[AWS KMS キーを作成する] を選択します。実行ロールには、作成したキーを使用するアクセス許可が必要です。KMS コンソールでキーを作成し終えたら、Athena コンソールの [ワークグループを作成] ページに戻り、[AWS KMS キーを選択するか、ARN を入力] 検索ボックスを使用して、今作成したキーを選択します。

      重要

      ワークグループの AWS KMS key を変更しても、更新前に管理されていたノートブックは引き続き古い KMS キーを参照します。更新後に管理されるノートブックでは、新しい KMS キーを使用します。以前のノートブックを新しい KMS キーを参照するように更新するには、以前のノートブックをそれぞれエクスポートしてからインポートします。以前のノートブックの参照を新しい KMS キーに更新する前に以前の KMS キーを削除すると、古いノートブックは復号化できなくなり、復元できなくなります。

      この動作は、KMS キーのわかりやすい名前であるエイリアスの更新にも当てはまります。KMS キーエイリアスを新しい KMS キーを指すように更新すると、エイリアスの更新前に管理されていたノートブックでは引き続き古い KMS キーを参照し、エイリアスの更新後に管理されたノートブックでは新しい KMS キーを使用します。KMS キーまたはエイリアスを更新する前に、これらの点を考慮してください。

  2. (オプション) [Other settings] (その他の設定) - このオプションを拡張して、ワークグループの [Publish CloudWatch metrics] (CloudWatch メトリクスの公開) オプションを有効または無効にします。このフィールドは、デフォルトで選択されています。詳細については、「CloudWatch メトリクスを使用して Apache Spark 計算をモニタリングする」を参照してください。

  3. (オプション) [Tags] (タグ) - このオプションを使用して、ワークグループにタグを追加します。詳細については、「Athena リソースにタグ付けする」を参照してください。

  4. [Create workgroup] (ワークグループの作成) を選択します。ワークグループが正常に作成されたことを知らせるメッセージが表示され、そのワークグループはワークグループのリストに表示されます。

ステップ 2: ノートブックエクスプローラーを開いてワークグループを切り替える

作成したばかりの Spark 対応ワークグループを使用する前に、そのワークグループに切り替える必要があります。Spark 対応のワークグループを切り替えるには、ノートブックエクスプローラー、またはノートブックエディタの [Workgroup] (ワークグループ) オプションを使用できます。

注記

開始する前に、ブラウザがサードパーティの Cookie をブロックしていないことを確認してください。ブラウザのデフォルトまたはユーザーの設定でサードパーティのCookieをブロックしている場合、ノートブックは起動しません。Cookie の管理の詳細については、以下を参照してください。

ノートブックエクスプローラーを開いてワークグループを切り替える
  1. ナビゲーションペインで、[Notebook Explorer] (ノートブックエクスプローラー) を選択します。

  2. コンソールの右上にある [Workgroup] (ワークグループ) オプションを使用して、作成した Spark 対応ワークグループを選択します。ノートブックのサンプルがノートブックのリストに表示されます。

    ノートブックエクスプローラーは次の方法で使用できます。

    • ノートブックのリンクされた名前を選択して、そのノートブックを新しいセッションで開きます。

    • ノートブックの名前変更、削除、またはエクスポートを行うには、[Actions] (アクション) メニューを使用します。

    • ノートブックファイルをインポートするには、[Import file] (ファイルをインポート) を選択します。

    • ノートブックを作成するには、[Create notebook] (ノートブックの作成) を選択します。

ステップ 3: ノートブックのサンプルを実行する

ノートブックのサンプルは、一般公開されているニューヨーク市のタクシー旅行データセットのデータをクエリします。ノートブックには、Spark DataFrames、Spark SQL、および AWS Glue Data Catalog の操作方法を示す例が示されています。

ノートブックのサンプルを実行するには
  1. ノートブックエクスプローラーで、ノートブックのサンプルのリンクされた名前を選択します。

    これにより、デフォルトのパラメータでノートブックセッションが開始され、ノートブックエディタでノートブックが開きます。デフォルトのパラメータ (最大 20 DPU) を使用して新しい Apache Spark セッションが開始されたことを知らせるメッセージが表示されます。

  2. セルを順番に実行して結果を確認するには、ノートブックのセルごとに [Run] (実行) ボタンを 1 回選択します。

    • 下へスクロールすると結果が表示され、新しいセルが表示されます。

    • 計算されたセルに対して、進行状況バーには完了率、経過時間、残り時間が表示されます。

    • ノートブックのサンプルは、アカウントにデータベースのサンプルとテーブルを作成します。最後のセルでは、クリーンアップの手順としてこれらを削除します。

注記

ノートブックのサンプルのフォルダ、テーブル、またはデータベース名を変更する場合は、それらの変更が使用する IAM ロールに反映されていることを確認してください。そうしない場合、アクセス許可が不十分なため、ノートブックを実行できない可能性があります。

ステップ 4: セッションの詳細を編集する

ノートブックセッションを開始後に、テーブルの形式、暗号化、セッションアイドルのタイムアウト、使用するデータ処理単位 (DPU) の最大同時数などのセッションの詳細を編集できます。DPU は処理能力を相対的に測定するもので、4 個の vCPU のコンピューティング性能と 16 GB のメモリで構成されています。

セッションの詳細を編集するには
  1. ノートブックエディタで、右上の [Session] (セッション) メニューから [Edit session] (セッションの編集) を選択します。

  2. [セッションの詳細の編集] ダイアログボックスにある [セッションパラメータ] セクションで、次のオプションの値を選択するか入力します。

    • その他のテーブル形式[Linux Foundation Delta Lake][Apache Hudi][Apache Iceberg]、または [カスタム] を選択します。

      • [Delta][Hudi]、または [Iceberg] のテーブルオプションの場合は、該当するテーブル形式に必要となるテーブルプロパティは [テーブルで編集] および [JSON で編集] オプションに自動的に提供されます。テーブル形式の使用に関する詳細な情報については、「Athena for Spark で Hive 以外のテーブル形式を使用する」を参照してください。

      • [カスタム] またはその他のテーブルタイプのテーブルプロパティを追加または削除するには、[テーブルで編集] オプションと [JSON で編集] オプションを使用します。

      • [テーブルで編集] オプションを使用する場合は、[プロパティを追加] を選択してプロパティを追加するか、[削除] を選択してプロパティを削除します。[キー] ボックスと [値] ボックスを使用して、プロパティ名とその値を入力します。

      • [JSON で編集] オプションを使用する場合は、JSON テキストエディタを使用して設定を直接編集します。

        • JSON テキストをクリップボードにコピーするには、[コピー] を選択します。

        • JSON エディタからすべてのテキストを削除するには、[クリア] を選択します。

        • 行折り返しの動作を設定するか、JSON エディタのカラーテーマを選択するには、設定 (歯車) アイコンを選択します。

    • [Spark 暗号化を有効にする]- — ディスクに書き込まれ、Spark ネットワークノードを介して送信されるデータを暗号化する場合は、このオプションを選択します。詳細については、「Apache Spark 暗号化を有効にする」を参照してください。

  3. [セッションパラメータ] セクションで、次のオプションの値を選択するか入力します。

    • [Session idle timeout] (セッションアイドルタイムアウト) - 1~480 分の値を選択または入力します。デフォルトは 20 です。

    • [Coordinator size] (コーディネーターサイズ) - コーディネーターは、ノートブックセッションで処理作業を調整し、他のエグゼキューターを管理する特別なエグゼキューターです。現在、1 つの DPU がデフォルトで、唯一の設定可能な値です。

    • [Executor size] (エグゼキューターサイズ) - エグゼキューターは、ノートブックセッションが Athena にリクエストできる最小の計算単位です。現在、1 つの DPU がデフォルトで、唯一の設定可能な値です。

    • [Max concurrent value] (同時実行の最大値) - 同時に実行できる DPU の最大数。デフォルトは 20 で、最小は 3、最大は 60 です。この値を増加しても自動的に追加のリソースが割り当てられるわけではありませんが、Athena では、計算負荷がそれを必要とし、リソースが使用可能になったときに、指定された最大数まで割り当てようとします。

  4. [Save] を選択します。

  5. [Confirm edit] (編集を確認) プロンプトで、[Confirm] (確認) を選択します。

    Athena はノートブックを保存し、指定したパラメータを使用して新しいセッションを開始します。ノートブックエディタのバナーに、変更されたパラメータで新しいセッションが開始されたことが通知されます。

    注記

    Athena はノートブックのセッション設定を記憶します。セッションのパラメータを編集してセッションを終了すると、Athena はノートブックのセッションを次に開始するときに設定したセッションパラメータを使用します。

ステップ 5: セッションおよび計算の詳細を表示する

ノートブックを実行すると、セッションおよび計算の詳細を表示できます。

セッションおよび計算の詳細を表示するには
  1. 右上の [Session] (セッション) メニューから [View details] (詳細を表示) を選択します。

    • [Current session] (現在のセッション) タブには、セッション ID、作成時間、ステータス、ワークグループなど、現在のセッションに関する情報が表示されます。

    • [History] (履歴) タブには、以前のセッションのセッション ID が表示されます。以前のセッションの詳細を表示するには、[History] (履歴) タブを選択し、リストからセッション ID を選択します。

    • [Calculations] (計算) セクションには、セッションで実行された計算のリストが表示されます。

  2. 計算の詳細を表示するには、計算 ID を選択します。

  3. [Calculation details] (計算の詳細) ページで、以下の操作を実行できます。

    • 計算用のコードを確認するには、[Code] (コード) セクションを参照してください。

    • 計算の結果を確認するには、[Results] (結果) タブを選択します。

    • テキスト形式で表示された結果をダウンロードするには、[Download results] (結果をダウンロード) を選択します。

    • Amazon S3 の計算結果に関する情報を表示するには、[View in S3] (S3 で表示) を選択します。

ステップ 6: セッションを終了する

ノートブックセッションを終了するには
  1. ノートブックエディタで、右上の [Session] (セッション) メニューから [Terminate] (終了) を選択します。

  2. [Confirm session termination] (セッション終了の確認) プロンプトで、[Confirm] (確認) を選択します。ノートブックが保存され、ノートブックエディタに戻ります。

注記

ノートブックエディタのノートブックタブを閉じても、アクティブなノートブックのセッションは自動的には終了しません。セッションを確実に終了させたい場合は、[Session] (セッション)、[Terminate] (終了) オプションを使用してください。

ステップ 7: 独自のノートブックを作成する

Spark 対応の Athena ワークグループを作成すると、独自のノートブックを作成できます。

ノートブックを作成するには
  1. コンソールのナビゲーションペインが表示されない場合は、左側の展開メニューをクリックします。

  2. Athena コンソールのナビゲーションペインで、[Notebook explorer] (ノートブックエクスプローラー) または [Notebook editor] (ノートブックエディタ) を選択します。

  3. 次のいずれかを行います。

    • [Notebook explorer] (ノートブックエクスプローラー) で、[Create notebook] (ノートブックの作成) を選択します。

    • [Notebook editor] (ノートブックエディタ) で、[Create notebook] (ノートブックの作成) を選択するか、プラスアイコン ([+]) を選択してノートブックを追加します。

  4. [Create notebook] (ノートブックの作成) ダイアログボックスの [Notebook name] (ノートブック名) に名前を入力します。

  5. (オプション) [Spark プロパティ] を展開し、次のオプションの値を選択するか入力します。

    • その他のテーブル形式[Linux Foundation Delta Lake][Apache Hudi][Apache Iceberg]、または [カスタム] を選択します。

      • [Delta][Hudi]、または [Iceberg] のテーブルオプションの場合は、該当するテーブル形式に必要となるテーブルプロパティは [テーブルで編集] および [JSON で編集] オプションに自動的に提供されます。テーブル形式の使用に関する詳細な情報については、「Athena for Spark で Hive 以外のテーブル形式を使用する」を参照してください。

      • [カスタム] またはその他のテーブルタイプのテーブルプロパティを追加または削除するには、[テーブルで編集] オプションと [JSON で編集] オプションを使用します。

      • [テーブルで編集] オプションを使用する場合は、[プロパティを追加] を選択してプロパティを追加するか、[削除] を選択してプロパティを削除します。[キー] ボックスと [値] ボックスを使用して、プロパティ名とその値を入力します。

      • [JSON で編集] オプションを使用する場合は、JSON テキストエディタを使用して設定を直接編集します。

        • JSON テキストをクリップボードにコピーするには、[コピー] を選択します。

        • JSON エディタからすべてのテキストを削除するには、[クリア] を選択します。

        • 行折り返しの動作を設定するか、JSON エディタのカラーテーマを選択するには、設定 (歯車) アイコンを選択します。

    • [Spark 暗号化を有効にする]- — ディスクに書き込まれ、Spark ネットワークノードを介して送信されるデータを暗号化する場合は、このオプションを選択します。詳細については、「Apache Spark 暗号化を有効にする」を参照してください。

  6. (オプション) [Session parameters] (セッションパラメータ) を展開し、次のオプションの値を選択または入力します。

    • [Session idle timeout] (セッションアイドルタイムアウト) - 1~480 分の値を選択または入力します。デフォルトは 20 です。

    • [Coordinator size] (コーディネーターサイズ) - コーディネーターは、ノートブックセッションで処理作業を調整し、他のエグゼキューターを管理する特別なエグゼキューターです。現在、1 つの DPU がデフォルトで、唯一の設定可能な値です。DPU (Data Processing Unit) は処理能力を相対的に測定するもので、4 個の vCPU のコンピューティング性能と 16 GB のメモリで構成されています。

    • [Executor size] (エグゼキューターサイズ) - エグゼキューターは、ノートブックセッションが Athena にリクエストできる最小の計算単位です。現在、1 つの DPU がデフォルトで、唯一の設定可能な値です。

    • [Max concurrent value] (同時実行の最大値) - 同時に実行できる DPU の最大数。デフォルトは 20 で、最大は 60 です。この値を増加しても自動的に追加のリソースが割り当てられるわけではありませんが、Athena では、計算負荷がそれを必要とし、リソースが使用可能になったときに、指定された最大数まで割り当てようとします。

  7. [Create] (作成) を選択します。ノートブックはノートブックエディタの新しいセッションで開きます。

ノートブックファイルの管理方法については、「ノートブックファイルを管理する」を参照してください。