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

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

pyspark中udf寫(xiě)法及其使用

作者:leap_ruo 更新時(shí)間: 2022-07-26 編程語(yǔ)言

背景

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

udf的兩種書(shū)寫(xiě)方式

第一種——udf不需要參數(shù)

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

from pyspark.sql.functions import udf
from pyspark.sql.types import StringType, ArrayType
# 定義基礎(chǔ)模塊
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'))
# 以下方法和上面一樣(其實(shí)就是帶參的簡(jiǎn)化版)
your_df = your_df.withColumn('new_col_name', proc_func_udf()('param_col1', 'param_col2'))

第二種——udf需要參數(shù)

from pyspark.sql.functions import udf
from pyspark.sql.types import StringType, ArrayType
# 定義基礎(chǔ)模塊1
def proc_func1(common_val1, param_val1):
	ret = '{}\t{}'.format(common_val1, param_val1)
	return ret
# 定義基礎(chǔ)模塊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

欄目分類(lèi)
最近更新