PySpark中的UDFs函数

本文介绍了如何在PySpark中注册和使用UDFs以提高大数据处理效率,探讨了不同类型的数据输出,包括原始类型和列表类型,并讨论了如何解决因数据量小导致的并行化问题。此外,还提到了基于Apache Arrow的Pandas UDFs,如Scalar和Grouped Map UDFs,以及如何启用和安装相关依赖。
摘要由CSDN通过智能技术生成

我们在用python原生的函数来处理迭代我们的数据,但是我们发现在处理一个比较大的dataframe可能会花费我们很久的时间。所以如果我们拥有一个集群,那么如何在集群上通过Pyspark来加速我们的处理速度呢?换句话说我们如何将python函数转化成Spark的用户自定义函数(UDF)呢?

注册一个UDF

Pyspark UDFs跟pandas的series和dataframes的.map()和.apply()方法类似。我可以将dataframe中的行作为函数的输入值,然后我们可以遍历整个dataframe。那唯一的区别是PySpark UDFs必须定义输出数据的类型。

举个例子,我从pandas的dataframe中创建一个PySpark的dataframe。

import pandas as pd
from pyspark.sql import SparkSession
spark = SparkSession \
    .builder \
    .appName("basic-op-price-fluctuate") \
    .master("local") \
    .config("fs.defaultFS","hdfs://host1:8020") \
    .getOrCreate()
spark.sparkContext.setLogLevel("WARN")
spark.conf.set("spark.sql.execution.arrow.enabled", "true")
df_pd = pd.DataFrame(
    data={'integers':[1,2,3],
          'floats':[-1.0,0.6,2.6],
          'integer_arrays':[[1,2],[3,4.6],[5,6,8,9]]}
)
df = spark.createDataFrame(df_pd)
df.printSchema()

df.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值