[アップデート] AWS Glue の Interactive Session の Spark Connect 対応を VS Code からノートブックで試してみた
- URL: https://dev.classmethod.jp/articles/20260624-glue-interactive-sessions-spark-connect
- 日付: 2026-06-24
- Tier: Tier 2
- 要旨: AWS Glue インタラクティブセッションが Apache Spark Connect をネイティブサポート(Glue バージョン 5.1 以降)。従来の Livy から gRPC + Apache Arrow ベースに変更され、SageMaker Unified Studio や VS Code・PyCharm 等のローカルIDE から AWS Glue のサーバーレス Spark に直接接続可能。著者が VS Code のノートブックから接続し、PySpark と Spark SQL を実行。エンドポイント取得・トークン認証・セッション作成を boto3 で実装し、331.892 DPUSeconds(東京リージョン約 0.04 ドル)のコストで完了。
詳細
Spark Connect はクライアントと Spark ドライバプロセスを分離するアーキテクチャ。クライアントは論理実行プラン gRPC でサーバーに送り、結果は Apache Arrow でストリーミング。従来の Livy(REST + Statement API)と異なり、PySpark remote() API で直接接続。
前提条件:検証リージョン ap-northeast-1、IAM ロール AWSGlueServiceRoleDefault で Glue Data Catalog と S3 参照、glue:CreateSession/GetSession/GetSessionEndpoint/DeleteSession と iam:PassRole 権限、ローカル Python 3.11。Spark Connect のエンドポイントはパブリック gRPC(443/TLS)、VPC セットアップ不要。
実装手順:pip install pyspark[connect]==3.5.6 で Spark Connect クライアントインストール。Jupyter カーネル登録後 VS Code で接続。SessionType=“SPARK_CONNECT” と GlueVersion=“5.1” を指定してセッション作成、READY になるまでポーリング。get_session_endpoint で URL とトークン(有効期限付き)取得、SparkSession.builder.remote() で接続。DataFrame API・Spark SQL・Temp View 利用可。セッション削除は明示的に実行して課金停止。
制限事項:セッションタイプ作成後変更不可、Statement API 使用不可、Lake Formation による細粒度アクセス制御(FGAC)非対応(フルテーブルアクセスのみ)、AWS Glue Studio では利用不可。SageMaker Unified Studio では sagemaker_studio.sparkutils で簡略化可能。Apache Spark は最近 Apache Iceberg テーブル対応が充実し、テーブル作成に Spark が必須となるケース増加。ノートブックを IaC 代わりに Git で管理できる利点。