クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

Spark の基本

レッスン全文をここで読めます。無料アカウントを作成すると、実際のラボで実践できます。

コンテナラボ読了目安 9分コマンド5個

このレッスンですること

Apache Spark は、ひとつのプログラムでは抱えきれない大きな表のデータを、仕事をジョブに分けて処理する道具です。DataFrame は Spark での表の呼び名で、コードでも SQL でも質問できます。

ラボには小さな Spark と、注文24件のファイルがあります。データを眺め、絞り込み、グループに分けて数え、同じような質問を SQL でして、最後に Spark UI でその仕事を探します。

始める前に

メモ

このレッスンの上のバーでラボを起動を押し、動き出したと表示されるまで待ってください。コンテナは spark のひとつだけで、ターミナルはその名前でポート 8000 に呼びかけます。Spark UI(Spark の動きを見る画面)のリンクは、ポート 4040 のウェブページを開きます。下の実行ボタンは、コマンドをラボのターミナルに、同じセッションの中で順番に入力してくれます。入力の様子を見たり、自分でコマンドを打ったりするときは、バーのターミナルを開く(新しいタブ)を押します。

1. データを見よう

Spark は orders.csv を読み込んで、orders という表にしました。この SQL は、その表から5行を出してほしいという質問です。答えは表で、最初の行は注文 1001、Ada さん、UK(イギリス)、キーボード2個、単価 25.0 です。curl があなたの質問をラボの問い合わせサービスに送り、返ってきた答えを表示します。

コマンド
curl -s -d 'SELECT * FROM orders LIMIT 5' http://spark:8000/sql

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

2. DataFrame で絞り込もう

同じ表が、orders という DataFrame にもなっています。filter は、条件に合う行だけを残します。次は UK の注文だけを残すので、答えは7行の表です。2つめのコマンドは、代わりに全部の行を数えて 24 と表示します。

コマンド
curl -s -d 'orders.filter(orders.country == "UK")' http://spark:8000/df

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
curl -s -d 'orders.count()' http://spark:8000/df

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

3. グループに分けて数えよう

groupBy は、同じ国の行をひとまとめにし、count はそれぞれのグループを数えます。答えは4行で、UK 7、Japan 6、France 6、Spain 5 です。ただし並ぶ順番は変わることがあります。並べ方を頼まないかぎり、Spark は順番を約束しないからです。

コマンド
curl -s -d 'orders.groupBy("country").count()' http://spark:8000/df

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

4. SQL で聞こう

同じような質問を SQL でします。国ごとの売上は、数量かける単価を足したもので、大きい順に並べます。答えは、いちばん上が Japan の 717.5、次が UK の 670.0、France が 495.0、Spain が 490.0 です。Spark は、SQL も DataFrame のコードも、同じような実行計画に変えて動かします。

コマンド
curl -s -d 'SELECT country, round(sum(quantity * unit_price), 2) AS revenue FROM orders GROUP BY country ORDER BY revenue DESC' http://spark:8000/sql

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

5. Spark UI で仕事を見よう

ブラウザで Spark UI を開きます。このレッスンの上のバーにあるリンクからです。Jobs(ジョブ)タブには、あなたの質問のために Spark がした仕事が並びます。SQL / DataFrame タブ(SQL と DataFrame の質問の一覧)には、質問ごとに、どんな計画で動いたかが出ます。手順をもう一度実行すると、新しいものが増えるのが見えます。自分で作った質問を提出するときは、この画面のスクリーンショットを撮ります。

先生へ

ヒント

このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒ひとりひとりのコピーです。ラボはサービスがひとつで、自動採点はありません。生徒は自分で作った質問の結果と、Spark UI でのスクリーンショット、そして Spark が何をしたかの一文を提出します。これはクラスターではなくローカルモードの Spark で、データも24行のファイルです。ですから DataFrame と SQL の使い方を学ぶもので、大規模データの扱いは学べません。ご自分のモジュールにコピーして変更するか、レッスンビルダーのラボメニューから一から作ってください。

このラボとソースについて: Apache Spark のラボ:CSV で DataFrame と Spark SQL を学ぶ

授業で教えていますか?これらのレッスンを生徒に割り当て、採点と生徒ごとのラボを使えます。