ID フィールドの追加
データを扱うときは、特定の列だけにアクセスして各種の処理を行いたいことがあります。 この課題では、DataFrame から有権者名の重複を取り除き、各行に一意の ID 番号を付与します。 Spark の ID は DataFrame のパーティションに基づいて割り当てられるため、ID の値は実際の行数よりも大きくなることがあります。
また、Spark の「遅延」処理により、ID はアクションが実行されるまで実際には生成されず、データセットの大きさによってはややランダムになります。
ワークスペースには spark セッションと、DallasCouncilVotes.csv.gz ファイルを読み込んだ Spark DataFrame df が用意されています。pyspark.sql.functions ライブラリはエイリアス F で利用できます。
この演習はコースの一部です
PySpark でデータをクレンジングする
演習の手順
- 列
VOTER NAMEから重複のないエントリを選び、voter_dfという新しい DataFrame を作成します。 voter_dfDataFrame の行数をカウントします。- 適切な Spark 関数を使って ROW_ID 列を追加します。
- ROW_ID が大きい順に上位 10 行を表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Select all the unique council voters
voter_df = df.____(df["VOTER NAME"]).____()
# Count the rows in voter_df
print("\nThere are %d rows in the voter_df DataFrame.\n" % ____)
# Add a ROW_ID
voter_df = voter_df.____('ROW_ID', F.____())
# Show the rows with 10 highest IDs in the set
voter_df.orderBy(voter_df.____.desc()).show(____)