Data/Data Analysis
[Pyspark] UDF 함수에 parameter값 추가
재융
2020. 5. 8. 17:26
반응형
데이터 전처리를 하는중, udf에 파라미터를 넘겨줘서 파라미터에 따라서 함수를 실행하는걸 원했다
다음과 같이 진행
파라미터값을 넘겨줄 땐, F.lit()함수를 이용해서 파라미터 값을 넘겨주면된다.
즉, F.lit('play')일 경우에는 reason 함수에서 logtype == 'play' 쪽 알고리즘이 실행되고 아니면 그 밑에 알고리즘이 실행이된다.
import pyspark.sql.functions as F
def reason(string, logtype):
if logtype == 'play':
try:
return string.split(",")[0] + "," + string.split(",")[1]
except:
return string.split(",")[0]
# unplay
else:
try:
return string.split(",")[0]
except:
return string
change_reason = F.udf(lambda x, logtype: reason(x, logtype))
# udf 사용시엔
temp_dataframe\
.withColumn('reason', change_reason(F.col('reason'), F.lit('play'))\
.show(10,False)
반응형