Spark でユーザー定義関数を使う
DataFrame を操作する際、Spark の組み込み文字列関数の強力さをすでに見てきました。ただし、ある程度複雑になると、関数呼び出しが入り組んでしまい、処理が難しくなります。そんなときに活用できるのが、User Defined Functions(UDF)です。ここでは UDF を使って DataFrame を操作してみましょう。
この演習では voter_df DataFrame を使い、first_name 列を「名+ミドルネーム」に置き換えます。
pyspark.sql.functions ライブラリはエイリアス F で利用できます。pyspark.sql.types のクラスはすでにインポート済みです。
この演習はコースの一部です
PySpark でデータをクレンジングする
演習の手順
getFirstAndMiddle()関数を編集し、名前のリストから最後の要素を除いたものをスペース区切りの文字列で返すようにします。- この関数をユーザー定義関数(UDF)として定義します。戻り値は文字列型にしてください。
- 作成した UDF を使って、
voter_dfにfirst_and_middle_nameという新しい列を作成します。 - DataFrame を表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def getFirstAndMiddle(names):
# Return a space separated string of names
return ' '.join(____)
# Define the method as a UDF
udfFirstAndMiddle = F.____(____, ____)
# Create a new column using your UDF
voter_df = voter_df.withColumn('first_and_middle_name', ____(____))
# Show the DataFrame
____