开发者社区> 问答> 正文

udf(用户定义的函数)如何在pyspark中工作?

我想了解udf在pyspark的工作。每当我们在数据帧上使用udf时,是否会打开python shell?

展开
收起
社区小助手 2018-12-06 15:19:51 3381 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    UDF可以通过两种方式提供给PySpark。

    UDF可以在Scala中定义并使用PySpark运行
    UDF可以在Python中定义并由PySpark运行
    在第一种情况下,UDF将作为Executor JVM本身的一部分运行,因为UDF本身是在Scala中定义的。没有必要创建python进程。

    在每个执行程序的第二种情况下,将启动python进程。数据将在执行程序和python之间进行序列化和反序列化以进行处理。这会对spark作业产生很大的性能影响和消耗。

    通常最好使用基于Scala的UDF,因为它们会为您提供更好的性能。

    在spark 2.x中有一种叫做Pandas Udf(矢量化UDF)的东西。它们是使用Pandas(使用apache箭头转换数据帧)实现的。基本上你在python中编写代码但是代码是使用pandas转换和运行的。这大大提高了Python中UDF的性能。

    2019-07-17 23:18:33
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SparkSQL实践与优化 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载
《Apache Flink-重新定义计算》PDF下载 立即下载