달나라 노트

Python pyspark : udf (사용자 정의 함수 User Defined Functions 사용하기) 본문

Python/Python pyspark

Python pyspark : udf (사용자 정의 함수 User Defined Functions 사용하기)

CosmosProject 2021. 5. 28. 20:13
728x90
반응형

 

 

 

udf method를 이용하면 만든 function을 column에 적용시킬 수 있습니다.

 

from pyspark.sql import SparkSession
from pyspark.sql.functions import udf
from pyspark.sql.function import col
import pandas as pd

spark = SparkSession.builder.getOrCreate()

df_test = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [10.0, 3.5, 7.315],
    'c': ['apple', 'banana', 'tomato']
})

df_spark = spark.createDataFrame(df_test)

def myfunc(x): # 1
    return x + 1

udf_myfunc = udf(myfunc) # 2

df_spark = df_spark.select(
    udf_myfunc(col('a')).alias('new_c'), # 3
    col('b'),
    col('c')
)
df_spark.show()



-- Result
+---+------+-------+
|  a|     b|      c|
+---+------+-------+
|  2|  10.0|  apple|
|  3|   3.5| banana|
|  4| 7.315| tomato|
+---+------+-------+

 

1. custom function을 만듭니다.

 

2. 1번에서 만든 function을 udf method의 인자로 전달하고, udf_myfunc 변수에 사용자 정의 함수(User Defined Function)를 할당해줍니다.

 

3. column 'a'에 udf_myfunc 함수를 적용시켜줍니다.

 

myfunc 함수는 1을 더한 값을 return해주는 함수인데 예상대로 a컬럼의 값에 1씩 더해진 결과를 얻은 걸 볼 수 있습니다.

 

 

이런식으로 사용자 정의 함수(UDF, User Defined Function)를 특정 column에 적용시킬 수 있습니다.

 

 

 

 

 

 

728x90
반응형
Comments