CSV ファイルのApache SparkへのインポートとSQL問い合わせ(Ubuntu環境)
【概要】
CSVファイルを Apache Spark(大規模データ処理エンジン)のデータフレームに読み込み、一時ビュー(temporary view。Sparkのセッションが続く間だけ有効な仮想的な表)として登録して、SQLで問い合わせる手順を説明する。対象環境はUbuntuである。
本ページで紹介するソフトウェアの利用条件は、利用者自身で確認すること。
【目次】
【関連する外部ページ】
- Apache Spark 公式ドキュメント(CSV データソース): https://spark.apache.org/docs/latest/sql-data-sources-csv.html
【サイト内の関連情報】
- データベースのページ
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環境変数の更新、FeatureJavaHome は JAVA_HOME 環境変数の更新、FeatureJarFileRunWith は .jar ファイルとJavaアプリケーションの関連付けである。INSTALLDIR はインストール先フォルダの指定である。
方法 2:インストーラーによるインストール
- Adoptium公式サイト(https://adoptium.net/temurin/releases/)にアクセスし、Version として「25 - LTS」、Operating System として「Windows」を選び、
.msi形式のWindows用インストーラーをダウンロードする。 - ダウンロードした
.msiファイルを実行し、インストールプログラムを起動する。 - ライセンス条項を確認し、同意できる場合はチェックを入れて次へ進む。
- 「Installation Scope」画面では「Install for all users of this machine」を選ぶ
- 「Custom Setup(カスタムセットアップ)」画面で、インストールする機能を選択する。既定では「Add to PATH(PATH環境変数への追加)」と「Associate .jar」(.jarファイルの関連付け)が有効になっている。さらに、ツリー内でバツ印(×)が付いている「Set JAVA_HOME variable(JAVA_HOME環境変数の更新)」をクリックして有効に変更することを推奨する。これらを有効にしないと、コマンドプロンプトから
javaコマンドを実行できなかったり、開発ツールがJDKを見つけられなかったりする。 - 「次へ (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ファイルは、先頭行に各列の列名が記載されているものを想定する。具体例として、以下のファイルを使用する。
- https://github.com/simongeek/PandasDA/blob/master/weather.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ファイルのインポート
- pyspark の起動
Sparkのインストール後、pysparkコマンドで対話型のPython実行環境(pysparkシェル)を起動する。pysparkシェルを起動すると、sparkという名前のSparkSession(Sparkを操作する入り口となるオブジェクト)があらかじめ用意され、そのまま使える。pyspark - インポート処理の実行
CSVファイルを読み込み、weatherという名前の一時ビューとして登録する。headerをtrueにすると先頭行が列名として扱われ、inferSchemaをtrueにすると各列のデータ型が自動で推定される。spark.read.option("header", "true").option("inferSchema", "true").load("/tmp/weather.csv", format="csv").createOrReplaceTempView("weather") - SQLクエリの実行
登録した一時ビューに対してSQLで問い合わせる。spark.sql(...)がクエリの結果をデータフレームとして返し、show()で内容を、schemaでスキーマ(列名と型の定義)を表示する。r = spark.sql("select * from weather") r.show() r.schema