pyspark入门系列 - 06 pyspark.sql.functions.pandas_udf使用教程

本节来学习pyspark.sql.functions中的pandas_udf函数。博客中代码基于spark 2.4.4版本。不同版本函数会有不同,详细请参考官方文档。博客案例中用到的数据可以点击此处下载(提取码:2bd5)

pyspark.sql.functions.pandas_udf(f=None, returnType=None, functionType=None)

pandas_udf是用户定义的函数,由Spark使用Arrow来传输数据,并使用Pandas来处理数据,从而实现矢量化操作。使用pandas_udf,可以方便的在PySpark和Pandas之间进行互操作,并且保证性能;其核心思想是将Apache Arrow作为序列化格式。

Pandas UDF通常表现为常规的PySpark函数API。

  • f: 用户定义的函数;
  • returnType: 用户自定义函数的返回值类型,该值可以是pyspark.sql.types.DataType对象或DDL格式的类型字符串
  • functionType: pyspark.sql.functions.PandasUDFType中的枚举值。 默认值:SCALAR.存在此参数是为了兼容性。 鼓励使用Python类型。

Pandas_UDF类型

目前,有三种类型的Pandas_UDF,分别是Scalar(标量映射),GROUPED_MAP(分组映射),GROUPED_AGG(分组聚合),对应的输入输出格式如下表

pandas_udf类型 输入 输出
SCALAR 一个或多个pd.Series 一个pd.Series
GROUPED_MAP pd.DataFrame pd.DataFrame
GROUPED_AGG 一个或多个pd.Series SCALAR
# 在学习之前先导入必要的包和数据
from pyspark.sql import SparkSession
from pyspark.sql.types import IntegerType, FloatType
import pandas as pd
from pyspark.sql.functions import pandas_udf, udf

spark = SparkSession.Builder().master('local').appName('GroupedData').getOrCreate()
df = spark.read.csv('../data/data.csv', header=True)

df = df.withColumn('投
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值