クラスタのプロビジョニングと管理を行うことなくサーバーレス Spark ワークロードを実行する方法を学ぶ

Google Cloud Japan Team
※この投稿は米国時間 2023 年 7 月 25 日に、Google Cloud blog に投稿されたものの抄訳です。
サーバーレス Spark は Google Cloud のフルマネージドのサーバーレス プロダクトで、クラスタのプロビジョニングと管理を行うことなく Apache Spark、PySpark、SparkR、Spark SQL のバッチ ワークロードを実行できます。サーバーレス Spark を使用すると、Google BigQuery 用の Apache Spark SQL コネクタによって、PySpark、SparkR、Spark SQL などの Apache Spark を使用したデータ処理ジョブを BigQuery のデータに対してサーバーレス環境で実行できます。Dataproc プロダクト ポートフォリオの一部であるサーバーレス Spark は、Dataproc Metastore の読み取りと書き込みにも対応しています。また、Dataproc の永続履歴サーバーを使用するように構成することで、Spark History Server にもアクセスできます。
このたび、Google Cloud でサーバーレス Spark を使用してデータを処理する複数の方法を学べる、インタラクティブなチュートリアルを Google Cloud コンソールから直接ご利用いただけるようになりました。
このブログ投稿では、チュートリアルで詳しく学ぶ内容の概要をご紹介します。
このチュートリアルの所要時間は約 30 分です。Apache Spark の基本を理解していれば、このチュートリアルのコンセプトを理解するのに役立ちます。Apache Spark の詳細については、プロジェクト ドキュメントをご覧ください。
Apache Spark とは
Apache Spark は、大規模な Python、Java、Scala、R、SQL データセット用のオープンソースの分散データ処理エンジンです。そのコアライブラリには、ML、グラフ処理、構造化ストリーミング、Pandas ベースのワークロードのための Pandas インテグレーションといったユースケースに対応する、より広範なツールセットが含まれています。さらに、sparknlp やデータベース コネクタ(Google BigQuery 用の Apache Spark SQL コネクタなど)を含む、多数のサードパーティ ライブラリによって Spark の機能が拡張されています。Apache Spark は、Apache Iceberg、Apache Hudi、Parquet、Avro など、複数のテーブル形式に対応しています。
サーバーレス Spark を使用した PySpark ジョブを BigQuery データに対して実行する
このチュートリアルでは、PySpark とサーバーレス Spark を使用して、BigQuery との間でデータの読み取りと書き込みを行う方法を説明します。Google BigQuery 用の Apache Spark SQL コネクタは現在、最新のサーバーレス Spark 2.1 ランタイムに含まれています。以下のコードでジョブを送信することもできます。
ログ、コンソール出力、Spark ログを表示する
スケールアップ時にサーバーレス Spark が追加のエグゼキュータをリクエストするジョブなど、サービスレベルのジョブは Cloud Logging でキャプチャされ、リアルタイムでも後からでも表示できます。
コンソール出力はジョブの実行中にコマンドラインを使って表示でき、Dataproc バッチ コンソールにも記録されます。
また、Dataproc 単一ノード クラスタとして設定された永続履歴サーバー経由で Spark ログを表示することもできます。以下のコマンドでクラスタを作成します。サーバーレス Spark ジョブの実行時に以下を含めると、Spark ログを表示できます。
永続履歴サーバーは、バッチ コンソールで、ジョブの [バッチ ID]、[Spark History Server を表示] の順にクリックすることで使用できます。
シンプルなデータ処理ジョブに Dataproc テンプレートを使用する
Dataproc テンプレートは、シンプルな ETL(抽出、変換、読み込み)ジョブと ELT(抽出、読み込み、変換)ジョブの機能を提供します。このコマンドライン ベースのツールを使用することで、シンプルで一般的なユースケースにおけるデータの移動と処理ができます。これらのテンプレートはサーバーレス Spark を使用しますが、Spark コードを記述する必要はありません。例として次のようなテンプレートがあります。
GCStoGCS
GCStoBigQuery
GCStoBigtable
GCStoJDBC と JDBCtoGCS
HivetoBigQuery
MongotoGCS と GCStoMongo
テンプレートの詳細リストをご確認ください。
以下の例では、GCStoGCS テンプレートを使用して、GCS ファイルを csv から parquet に変換しています。
使ってみる
このブログ投稿で取り上げた情報の詳細と全体像については、インタラクティブなチュートリアルをご確認ください。新規のお客様には、Google Cloud の $300 分のクレジットも付与されます。
詳細:
- デベロッパー アドボケイト Brad Miro