
3
章
DataFrame
33
3
章
DataFrame
DataFrameは、名前付きの列で構成されたイミュータブルなデータの分散コレクションで、リ
レーショナルデータベースにおけるテーブルに似ています。DataFrameはApache Spark 1.0にお
いて
SchemaRDD
という名前で experimentalな機能として導入され、Apache Spark 1.3リリースで
DataFrame
という名前に変更されました。Pythonのpandas の
DataFrame
やRの
data.frame
に
慣れているなら、構造化データを簡単に扱えるようにしてくれるという点で SparkのDataFrameも似
た概念です。とはいえ異なっている点もあるので、期待しすぎは禁物です。
データの分散コレクションに構造を持ち込むことによって、Sparkのユーザーは Spark SQLを使っ
て構造化データに対してクエリを実行したり、(ラムダ式ではなく)式のメソッドを使ったりすることが
できるようになります。本章では、コードサンプルの中でどちらの方法も使っていきます。データを構
造化することで、Apache Spark のエンジン、中でも Catalyst OptimizerはSpark のクエリのパフォー
マンスを大きく改善できます。以前の Spark のAPI(すなわち RDD API)で は、JavaのVMとPy4Jの
間の通信時に生ずるオーバーヘッドのため、Pythonで実行するクエリはかなり低速に