当前位置:   article > 正文

pyspark中udf传参数_pyspark udf传多个入参

pyspark udf传多个入参

以一个简单的例子介绍如何使用udf进行参数的传递:

  1. 首先创建一个简单的dataframe
df = spark.createDataFrame([
        (1, 100, 320),
        (2, 135, 400),
        (3, 140, 380),
        (4, 120, 500),
        (5, 130, 300),
        
    ], ['id', 'area', 'price'])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这个dataframe有三列,id,area,price,目的是对area和price进行归一化,假设已经知道area与price的最大值与最小值:

area_max = 140
area_min = 100
price_max = 500
price_min = 300
  • 1
  • 2
  • 3
  • 4

定义udf函数如下:

def normalize_process(maxValue, minValue):
    
    def process(value, max_value, min_value):
        if max_value - min_value == 0:
            return 0
        else:
            return float(value - min_value) / (max_value - min_value)

    return F.udf(lambda x: process(x, maxValue, minValue))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
df = df \
    .withColumn("area_norm", normalize_process(area_max, area_min)(F.col("area"))) \
    .withColumn("price_norm", normalize_process(price_max, price_min)(F.col("price")))

  • 1
  • 2
  • 3
  • 4
df.show()


		id		area		price	  area_norm		price_norm
		1		100.0		320.0		0.000		0.1
		2		135.0		400.0		0.875		0.5
		3		140.0		380.0		1.000		0.4
		4		120.0		500.0		0.500		1.0
		5		130.0		300.0		0.750		0.0 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/66468
推荐阅读
  

闽ICP备14008679号