1. 学ぶ
  2. /
  3. コース
  4. /
  5. PySpark入門

Connected

演習

列の作成

この章では、Spark の DataFrame クラスで定義されているメソッドを使って、よくあるデータ操作を行う方法を学びます。

まずは列ごとの演算を見ていきましょう。Spark では .withColumn() メソッドを使います。これは2つの引数を取り、1つ目は新しい列名の文字列、2つ目は新しい列そのものです。

新しい列は Column クラスのオブジェクトである必要があります。これは df.colName のように DataFrame から列を取り出すだけで簡単に作成できます。

Spark の DataFrame は pandas と少し扱いが異なります。Spark の DataFrame は「不変(immutable)」で、元のオブジェクトを書き換えられないため、列をその場で更新することはできません。

そのため、これらのメソッドはすべて新しい DataFrame を返します。元の DataFrame を上書きしたい場合は、次のように戻り値を代入し直します。

df = df.withColumn("newCol", df.oldCol + 1)

このコードは、df と同じ列に加えて新しい列 newCol を持つ DataFrame を作成します。newCol の各要素は、対応する oldCol の値に 1 を加えたものです。

既存の列を上書きしたい場合は、最初の引数にその列名を指定するだけでOKです!

ワークスペースには、spark という名前の SparkSession がすでに用意されています。

指示

100 XP
  • .catalog 内の flights テーブルを spark.table() メソッドで読み込み、DataFrame を作成して flights という変数に保存します(引数は "flights")。
  • flights.show() を使って先頭を表示します。出力を確認すると、air_time 列にはフライトの所要時間(分)が入っています。
  • flights に新しい列 duration_hrs を追加し、各フライトの所要時間(時間)を格納します(air_time を 1 時間あたりの分数で割ります)。