PySpark SQL入門:SQL感覚で扱う大規模データ処理

  • 2025年8月22日
  • 2025年8月25日
  • 未分類

こんにちわ、クラウドデータ研究所です。

前回の記事「PySpark超概要」では、PySparkがどのように大規模データを効率的に処理するかをざっくり説明しました。

データちゃん
PysparkはSparkという分散処理技術をPythonで扱う為のAPIの仕組みことでしたね。

今回はその中でも実務でよく使われる PySpark SQL に焦点をあてていきます。SQLに慣れている人なら直感的に扱えるため、データ分析やETL処理の現場で非常に重宝される仕組みです。ここでは、PySpark SQLとは何か、基本的な使い方、活用例を見ていきましょう!

PySpark SQLとは?

PySpark SQLは、Spark上でSQLライクにデータ操作を行うためのモジュールです。通常のSpark DataFrame APIに加えて、SQL文を直接発行してデータを抽出・集計できるのが大きな特徴です。

  • SQL経験者にとって学びやすい
    既存のSQL文法(SELECT, WHERE, GROUP BY, JOINなど)をそのまま利用可能。
  • 分散処理を意識しなくてよい
    巨大データであってもSQLを書く感覚で処理を実行できる。
  • データベース連携も容易
    RDBやParquet、CSVなど、さまざまなデータソースに対応。

PySpark SQLを使う準備

PySpark SQLを利用するには、まずDataFrameを一時ビュー(一時テーブル)として登録します。

# DataFrameを一時ビューとして登録
df.createOrReplaceTempView("sales")

# SQL文を発行
result = spark.sql("""
    SELECT product, SUM(amount) AS total_amount
    FROM sales
    GROUP BY product
""")
result.show()

ポイントは、createOrReplaceTempView で一時ビューを作ること。これにより、PythonコードとSQLの両方から同じデータを操作できます。

よく使うSQL構文とPySparkでの実行例

SELECTとWHERE

SELECT name, age 
FROM people 
WHERE age > 30

GROUP BYと集計

SELECT country, COUNT(*) AS cnt
FROM customers
GROUP BY country

JOIN

SELECT a.id, a.value1, b.value2
FROM df1 a
INNER JOIN df2 b
ON a.id = b.id

いずれもSQL文をそのまま書けるため、データベース経験者なら直感的に理解できます。

DataFrame APIとの比較

PySparkでは同じ処理を DataFrame API でも書けます。

例:国ごとの件数を集計

df.groupBy("country").count()

同じ処理をSQLで書くと:

SELECT country, COUNT(*) 
FROM customers 
GROUP BY country

どちらを使っても良いですが、

  • Python的に柔軟な処理を組みたい → DataFrame API
  • 既存SQLスキルを活かしたい/読みやすさ重視 → SQL文
    と使い分けるのが一般的です。

実務での利用シーン

PySpark SQLは、現場で次のようなシーンで活用されています。

  • データレイクの分析
    Data Lake上のParquetやORCファイルをSQLで一気に分析。
  • ログ集計
    アクセスログやトランザクションログをSQLでグルーピングして傾向分析。
  • ETL処理の一部として
    異なるデータソースをJOINして加工し、次の処理に渡す。
  • 機械学習の前処理
    SQLを使って特徴量を抽出したり欠損値を処理したりする。

これらはすべて「SQLで書ける」という直感性が効いています。

PySpark SQLをさらに深める

PySpark SQLには基本的なSQLだけでなく、以下のような機能も備わっています。

  • UDF(ユーザー定義関数)
    Pythonで関数を定義してSQLから呼び出せる。
  • Window関数
    SQLの分析関数(RANK, ROW_NUMBER, LAGなど)を利用可能。
  • キャッシュと最適化
    cacheTable や Catalyst Optimizer により処理効率を改善。

これらを使いこなすことで、単なるSQL操作にとどまらず、高度な分析基盤を構築できます。

まとめ

PySpark SQLは、SQL経験者にとっての強力な武器です。SQL文法をそのまま使えるため習得コストが低く、しかも分散処理の力で数百GB規模のデータを処理できます。DataFrame APIとの併用により、柔軟性と表現力も確保できます。

前回の記事「PySpark超概要」と合わせて理解すれば、PySparkの全体像とSQLモジュールの位置づけがクリアになるでしょう。これからビッグデータの分析やETL基盤構築を目指す方は、まずPySpark SQLから触ってみるのがおすすめです。


最新情報をチェックしよう!