Functions のインポートにエイリアスを使う
from pyspark.sql.functions import *
上記のような import 文をたまに見ますが、やめた方がいいです。
これは、Python の組み込み関数である、sum
, count
等と衝突します。また、col
などのよく利用する変数名とも衝突しやすいです。
エラー例:
from pyspark.sql.functions import *
sum([1,2,3])
> Invalid argument, not a string or column: [1, 2, 3] of type . For column literals, use 'lit', 'array', 'struct' or 'create_map' function.
回避策:エイリアスを使ってインポートし、F.sum()
等で利用しましょう。
from pyspark.sql import functions as F
df.col_name による直接参照は避ける
df = df.select(F.lower(df1.colA), F.upper(df2.colB))
上記の場合、スペース等のサポートされていない文字が含まれるカラムの参照時にエラーが発生します。また、df
変数名が長い時にタイプミスが発生しやすくなります。
回避策:F.col
による間接参照を利用します。全体の表記を統一できるため視認性も向上します。
df = df.select(F.lower(F.col('colA')), F.upper(F.col('colB')))