EMR Serverless Spark に組み込まれている SQL エディターを使用して、Spark SQL ジョブをインタラクティブに記述および実行します。ジョブの実行後、Spark UI にアクセスして、実行ステータス、リソース使用量、およびログを確認できます。
前提条件
開始する前に、以下が準備できていることを確認してください:
-
ワークスペース。詳細については、「ワークスペースの作成」をご参照ください。
-
SQL セッションインスタンス。詳細については、「SQL セッションの管理」をご参照ください。
Spark SQL ジョブの作成
-
開発ページに移動します。
-
EMR コンソールにログインします。
-
左側のナビゲーションウィンドウで、[EMR Serverless] > [Spark] を選択します。
-
[Spark] ページで、対象のワークスペースの名前をクリックします。
-
[EMR Serverless Spark] ページで、左側のナビゲーションウィンドウにある [開発] をクリックします。
-
-
ジョブを作成します。
-
[開発] タブで、
アイコンをクリックします。 -
ダイアログボックスで [名前] を入力し、タイプを [SparkSQL] に設定して、[OK] をクリックします。
-
右上隅で、データカタログ、データベース、および実行中の SQL セッションインスタンスを選択します。新しい SQL セッションインスタンスを作成するには、ドロップダウンリストから [SQL セッションに接続] を選択します。詳細については、「SQL セッションの管理」をご参照ください。

-
エディターに SQL ステートメントを入力します。
例 1:基本的な SQL 操作
データベースを作成し、そのデータベースに切り替え、テーブルを作成し、行を挿入して、データをクエリします。
create DATABASE test_sql; use test_sql; CREATE TABLE IF NOT EXISTS my_table (id INT, name STRING); INSERT INTO my_table VALUES(1, 'Alice'),(2, 'Bob'); SELECT * FROM my_table WHERE id > 1;結果は次の図に示されています。

例 2:CSV ベースの外部テーブル
Object Storage Service (OSS) の CSV ファイルをバックエンドとする外部テーブルを作成し、分析クエリを実行します。
oss://<bucketname>/user/を実際のバケットパスに置き換えてください。-
外部テーブルを作成します。
ordersという名前のテーブルを、以下のフィールドで定義します:-
order_id:注文 ID。 -
order_date:注文タイムスタンプ。例:'2025-07-01 10:00:00'。 -
order_category:製品カテゴリ。例:'Electronics'または'Apparel'。 -
order_revenue:注文金額。
CREATE TABLE orders ( order_id STRING, -- 注文 ID order_date STRING, -- 注文タイムスタンプ order_category STRING, -- 製品カテゴリ order_revenue DOUBLE -- 注文金額 ) USING CSV OPTIONS ( path 'oss://<bucketname>/user/', header 'true' ); -
-
テストデータを挿入します。
INSERT OVERWRITE TABLE orders VALUES ('o1', '2025-07-01 10:00:00', 'Electronics', 5999.0), ('o2', '2025-07-02 11:30:00', 'Apparel', 299.0), ('o3', '2025-07-03 14:45:00', 'Electronics', 899.0), ('o4', '2025-07-04 09:15:00', 'Home Goods', 99.0), ('o5', '2025-07-05 16:20:00', 'Electronics', 1999.0), ('o6', '2025-07-06 08:00:00', 'Apparel', 199.0), ('o7', '2025-07-07 12:10:00', 'Electronics', 799.0), ('o8', '2025-07-08 18:30:00', 'Home Goods', 59.0), ('o9', '2025-07-09 20:00:00', 'Electronics', 399.0), ('o10', '2025-07-10 07:45:00', 'Apparel', 599.0), ('o11', '2025-07-11 09:00:00', 'Electronics', 1299.0), ('o12', '2025-07-12 13:20:00', 'Home Goods', 159.0), ('o13', '2025-07-13 17:15:00', 'Apparel', 499.0), ('o14', '2025-07-14 21:30:00', 'Electronics', 999.0), ('o15', '2025-07-15 06:10:00', 'Home Goods', 299.0); -
分析クエリを実行します。次のクエリは、15 日間のカテゴリ別売上パフォーマンス (注文数、流通取引総額 (GMV)、平均注文金額、最新の注文時間) を返します。対象は総収益が 1,000 を超えるカテゴリで、結果は GMV の降順で並べ替えられます。
SELECT order_category, COUNT(order_id) AS order_count, SUM(order_revenue) AS gmv, AVG(order_revenue) AS avg_order_amount, MAX(order_date) AS latest_order_date FROM orders WHERE CAST(order_date AS TIMESTAMP) BETWEEN '2025-07-01' AND '2025-07-15' GROUP BY order_category HAVING SUM(order_revenue) > 1000 ORDER BY gmv DESC, order_category ASC;
-
-
(オプション) 右側の [バージョン情報] タブをクリックして、バージョンを比較します。エディターは、バージョン間の SQL コードの差異をハイライト表示します。
-
-
ジョブを実行して公開します。
-
[実行] をクリックします。結果は [実行結果] タブに表示されます。エラーが発生した場合は、[実行に関する問題] タブを確認してください。右側の実行履歴パネルには、過去 3 日間のレコードが表示されます。
-
ジョブが正しく実行されることを確認した後、右上隅の [公開] をクリックします。
-
[公開] ダイアログボックスで、リリースノートを入力し、[OK] をクリックします。
-
Spark UI へのアクセス
Spark UI には、タスクの実行ステータス、リソース使用量、およびログ情報が表示されます。これらは Spark ジョブの分析と最適化に役立ちます。
実行結果からのアクセス
このメソッドには、esr-4.2.0 (esr-4.x)、esr-3.2.0 (esr-3.x)、または esr-2.6.0 (esr-2.x) 以降のエンジンバージョンが必要です。
SQL ステートメントの実行後、[実行結果] タブの下部にある [Spark UI] をクリックします。
セッションインスタンスからのアクセス
SQL ステートメントの実行後、セッションインスタンスを見つけて、
> [Spark UI] を選択します。
キーボードショートカット
| 機能 | Windows | Mac | 説明 |
|---|---|---|---|
| 現在のスクリプトを実行 | Ctrl + Enter |
Control + Enter |
すべての SQL ステートメント、またはハイライト表示された選択範囲のみを実行します。[実行] をクリックする操作と同じです。 |
| SQL のフォーマット | Ctrl + P |
Control + P |
SQL の構造をフォーマットします:インデント、改行、キーワードの大文字/小文字を標準化します。 |
| テキストの検索 | Ctrl + F |
Control + F |
現在のスクリプトでキーワードを検索します。 |
| タスクの保存 | Ctrl + S |
Control + S |
データ損失を防ぐために、現在の未公開のジョブを保存します。 |
次のステップ
ワークフローを作成して、ジョブが定期的に実行されるようにスケジューリングします。詳細については、「ワークフローの作成」をご参照ください。完全なスケジューリングの例については、「Spark SQL 開発のクイックスタート」をご参照ください。