Sparkデータフレームの紹介
メニューを表示するにはスワイプしてください
Spark DataFrame は、名前付きカラムで構成された分散型データコレクション。概念的にはリレーショナルデータベースのテーブルやカラムヘッダー付きスプレッドシートと同等だが、複数のコンピュータクラスタ上で処理されるよう設計されている。
セクション4に進むと、インターフェースからデータそのものに焦点が移る。Databricksで効果的に作業するには、DataFrame を理解することが不可欠。これは、Apache Sparkがデータを保持・操作するために使用する基本構造。Python、SQL、Scalaのいずれを使う場合でも、ほとんどすべての操作はDataFrameとのやり取りを伴う。
後ほど使用するPy Sparkインターフェースも存在する。
Apache Spark は、大量データを複数のコンピュータで並列処理するための強力なエンジン。Scalaで記述されており、Databricksの内部で実際の処理を担っている。
PySpark はSparkのPythonインターフェース。通常のPythonコードのように記述しながら、裏側でSparkに指示を出すことができる。
Databricksノートブックで df.filter() や df.groupBy() を記述する際、それはPySparkであり、実際にクラスタ全体で何百万行ものデータを処理しているのはSparkである。
スプレッドシートのアナロジー
DataFrame を視覚化する最も簡単な方法は、Excel ワークブックの 1 枚のシートを思い浮かべることです。データの行と、「Date」「Product_ID」「Price」などの特定の名前を持つ列があります。しかし、ノートパソコン上に存在する Excel シートとは異なり、Spark DataFrame は 分散型 です。つまり、データセットが 1 台のコンピュータに収まりきらない場合、Spark は「スプレッドシート」を小さなチャンクに分割し、クラスタ内の複数のノードに分散します。
生データファイルではなく DataFrame を使う理由
生の CSV や JSON ファイルを DataFrame に読み込むと、Databricks は 2 つの重要な処理を行います:
- スキーマ推論: データを解析し、「Price」が数値、「Name」がテキストであることを理解します。
- 最適化: データが DataFrame に格納されると、Spark は「オプティマイザ」を使って、そのデータをフィルタリングや集計する最速の方法を見つけます。これは、最も効率的なルートを見つけて計算リソースを無駄にしないようにする GPS のような役割を果たします。
主な特徴
DataFrame の主な特徴は 3 つあります。
- 不変性: DataFrame は一度作成されると変更できません。データの「クリーンアップ」や「列の削除」を行う場合、Spark は実際にはそれらの変更を適用した新しい DataFrame を作成します。これによりデータの整合性が保たれます。
- 遅延評価: Spark は結果(カウントや表示など)を要求するまで実際の処理を行いません。最初に「プラン」を構築し、本当に必要なときだけ実行します。
- 統一 API: Python で DataFrame を作成し、その後 SQL でクエリを実行することができます。基盤となる構造は同じままで、「言語の混在」が可能です(セクション3で実践しました)。
DataFrame とテーブルの違い
Databricks では「テーブル」と「DataFrame」という用語がしばしば同じ意味で使われますが、わずかな違いがあります。テーブルは カタログ に保存される永続的なオブジェクトです。DataFrame はノートブック実行中にクラスタのメモリ上に存在する一時的なオブジェクトです。
一般的なワークフローは次の通りです:
- カタログ からデータを DataFrame に読み込む;
- コードで DataFrame を操作する;
- 最終結果を カタログ に テーブル として保存する。
1. Spark DataFrame は、単一のコンピュータで処理できないほど大きなデータセットをどのように扱いますか?
2. SparkでDataFrameを「変更」した場合(例:列を削除した場合)、何が起こりますか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください