日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

pyspark中udf寫法及其使用

作者:leap_ruo 更新時間: 2022-07-26 編程語言

背景

udf是處理dataframe比較常見且便捷的功能模塊,用戶自定的處理功能封裝在udf中,使得dateframe的處理變得通俗可控。

udf的兩種書寫方式

第一種——udf不需要參數

這里的不需要參數,是指udf不需要傳入公共的參數(這個里的公共是對udf中多個參數模塊而言的),且該參數非dataframe中的字段。

from pyspark.sql.functions import udf
from pyspark.sql.types import StringType, ArrayType
# 定義基礎模塊
def proc_func(param_val1, param_val2):
	ret = '{}\t{}'.format(param_val1, param_val2)
	return ret
# 定義udf
def proc_func_udf():
	return udf(proc_func, StringType())
# 如果需要返回array,格式需為ArrayType(StringType())
# 使用udf
your_df = your_df.withColumn('new_col_name', proc_func_udf('param_col1', 'param_col2'))
# 以下方法和上面一樣(其實就是帶參的簡化版)
your_df = your_df.withColumn('new_col_name', proc_func_udf()('param_col1', 'param_col2'))

第二種——udf需要參數

from pyspark.sql.functions import udf
from pyspark.sql.types import StringType, ArrayType
# 定義基礎模塊1
def proc_func1(common_val1, param_val1):
	ret = '{}\t{}'.format(common_val1, param_val1)
	return ret
# 定義基礎模塊2	
def proc_func2(common_val2, param_val2):
	ret = '{}\t{}'.format(common_val2, param_val2)
	return ret
# 定義udf
def proc_func_udf(common_val1, common_val2):
	def proc_func(param_val1, param_val2):
		ret1 = proc_func1(common_val1, param_val1)
		ret2 = proc_func2(common_val2, param_val2)
		ret = ret1 + ret2
		return ret
	return udf(proc_func, StringType())

# 使用udf
common_val1 = []
common_val2 = {}
your_df = your_df.withColumn('new_col_name', proc_func_udf(common_val1, common_val2)('param_col1', 'param_col2'))

原文鏈接:https://blog.csdn.net/Airstudy/article/details/125984233

欄目分類
最近更新