集約処理
.min()、.max()、.count() のような一般的な集約メソッドは、いずれも GroupedData のメソッドです。これは DataFrame の .groupBy() メソッドを呼び出すことで作成されます。これが具体的に何を意味するかは、このあと数個の演習で学びます。今は、これらの関数を使うには DataFrame に対してそのメソッドを呼ぶだけで十分です。たとえば、DataFrame df の列 col の最小値を求めるには、次のようにします。
df.groupBy().min("col").show()
これはまず GroupedData オブジェクトを作成(そのため .min() メソッドが使えます)し、次に col の最小値を求め、その結果を DataFrame として返します。
それでは、実際に集約処理をやってみましょう!
ワークスペースにはすでに spark という SparkSession と、Spark DataFrame の flights が用意されています。
この演習はコースの一部です
PySpark入門
演習の手順
- PDX を出発したフライトのうち、最短距離(distance)のフライトの距離を、まず
.filter()で絞り込み、続いて.min()メソッドで求めてください。フィルタ条件は SQL 文字列ではなく、列を直接参照して指定します。 - SEA を出発したフライトのうち、最長時間(time)のフライトの所要時間を、
filter()で絞り込み、続いて.max()メソッドで求めてください。フィルタ条件は SQL 文字列ではなく、列を直接参照して指定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Find the shortest flight from PDX in terms of distance
flights.filter(____.____ == ____).groupBy().____(____).show()
# Find the longest flight from SEA in terms of air time
flights.filter(____).groupBy().____.show()