CSV ファイルのApache SparkへのインポートとSQL問い合わせ(Ubuntu環境)

概要

CSVファイルを Apache Spark(大規模データ処理エンジン)のデータフレームに読み込み、一時ビュー(temporary view。Sparkのセッションが続く間だけ有効な仮想的な表)として登録して、SQLで問い合わせる手順を説明する。対象環境はUbuntuである。

本ページで紹介するソフトウェアの利用条件は、利用者自身で確認すること。

目次

関連する外部ページ

サイト内の関連情報

1. 前準備

Java 21(Temurin 21 JDK) のインストール

Eclipse Temurin(Adoptium)のインストールを行い、Javaのプログラムをコンパイル・実行する環境を整える。扱う環境は、Windows搭載パソコンである。現時点(2026年6月)での最新LTS版である Java 25(Temurin 25 JDK)を推奨する。

[Windows での Java 25(Temurin 25 JDK) のインストール手順を見るには、ここをクリック]

Windows での Java 25(Temurin 25 JDK) のインストール

以下のいずれかの方法で Java 25(Temurin 25 JDK)をインストールする。JDKがインストール済みの場合、この手順は不要である。

方法 1:winget によるインストール

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。

Temurin の Windows インストーラー(.msi)は、ユーザー単位ではなくマシン単位でインストールされる(1台に1つのインストール)。そのため、システム全体(全ユーザー向け)にインストールするには管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動するとPATHが反映される。

REM Java 25(Temurin 25 JDK) をインストール(PATH と JAVA_HOME を更新)
winget install --id EclipseAdoptium.Temurin.25.JDK -e --silent --accept-source-agreements --accept-package-agreements --override "ADDLOCAL=FeatureMain,FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome INSTALLDIR=\"C:\Program Files\Eclipse Adoptium\jdk-25\" /quiet"

上記の --override 内の指定の意味は次のとおりである。FeatureEnvironment はPATH環境変数の更新、FeatureJavaHomeJAVA_HOME 環境変数の更新、FeatureJarFileRunWith は .jar ファイルとJavaアプリケーションの関連付けである。INSTALLDIR はインストール先フォルダの指定である。

方法 2:インストーラーによるインストール

  1. Adoptium公式サイト(https://adoptium.net/temurin/releases/)にアクセスし、Version として「25 - LTS」、Operating System として「Windows」を選び、.msi 形式のWindows用インストーラーをダウンロードする。
  2. ダウンロードした .msi ファイルを実行し、インストールプログラムを起動する。
  3. ライセンス条項を確認し、同意できる場合はチェックを入れて次へ進む。
  4. 「Installation Scope」画面では「Install for all users of this machine」を選ぶ
  5. 「Custom Setup(カスタムセットアップ)」画面で、インストールする機能を選択する。既定では「Add to PATH(PATH環境変数への追加)」と「Associate .jar」(.jarファイルの関連付け)が有効になっている。さらに、ツリー内でバツ印(×)が付いている「Set JAVA_HOME variable(JAVA_HOME環境変数の更新)」をクリックして有効に変更することを推奨する。これらを有効にしないと、コマンドプロンプトから java コマンドを実行できなかったり、開発ツールがJDKを見つけられなかったりする。
  6. 「次へ (Next)」をクリックし、続いて「インストール (Install)」をクリックしてインストールを開始する。完了後「Finish」で閉じる。

インストールの確認

コマンドプロンプトで以下を実行する。

java --version

バージョン番号(例:openjdk 25.x.x)が表示されればインストール成功である。「'java' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していないか、PATHが反映されていない(コマンドプロンプトを再起動して再度確認する)。

あわせて、コンパイラと JAVA_HOME も確認しておくとよい。

javac --version
echo %JAVA_HOME%

Apache Spark のインストール

Ubuntu における Apache Spark(バージョン 4.1.2)のインストール手順は、別ページ »で説明する。

2. CSVファイルの準備

本説明で使用するCSVファイルは、先頭行に各列の列名が記載されているものを想定する。具体例として、以下のファイルを使用する。

本手順を実際に試す場合は、以下のコマンドでCSVファイルをダウンロードする。git clone でリポジトリを取得し、その中の weather.csv/tmp/weather.csv にコピーする。

cd /tmp
rm -f /tmp/weather.csv
git clone https://github.com/simongeek/PandasDA
cp ./PandasDA/weather.csv /tmp/weather.csv

git(バージョン管理ツール)の使い方は別ページで説明している。

3. Apache SparkへのCSVファイルのインポート

  1. pyspark の起動
    Sparkのインストール後、pyspark コマンドで対話型のPython実行環境(pysparkシェル)を起動する。pysparkシェルを起動すると、spark という名前のSparkSession(Sparkを操作する入り口となるオブジェクト)があらかじめ用意され、そのまま使える。
    pyspark
  2. インポート処理の実行
    CSVファイルを読み込み、weather という名前の一時ビューとして登録する。headertrue にすると先頭行が列名として扱われ、inferSchematrue にすると各列のデータ型が自動で推定される。
    spark.read.option("header", "true").option("inferSchema", "true").load("/tmp/weather.csv", format="csv").createOrReplaceTempView("weather")
    
  3. SQLクエリの実行
    登録した一時ビューに対してSQLで問い合わせる。spark.sql(...) がクエリの結果をデータフレームとして返し、show() で内容を、schema でスキーマ(列名と型の定義)を表示する。
    r = spark.sql("select * from weather")
    r.show()
    r.schema