LoginSignup
6
1

More than 1 year has passed since last update.

PySpark Tips:Python と PySpark の名前衝突を避ける etc.

Last updated at Posted at 2022-12-17

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')))
6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1