【问题标题】:How does udf (user defined function) work in pyspark?udf(用户定义函数)如何在 pyspark 中工作?
【发布时间】:2018-11-26 08:50:12
【问题描述】:

我想了解 udf 在 pyspark 中的工作原理。每次我们在数据帧上使用 udf 时都会打开一个 python shell 吗?

【问题讨论】:

    标签: python apache-spark pyspark user-defined-functions


    【解决方案1】:

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

    1. UDF 可以在 Scala 中定义并使用 PySpark 运行
    2. UDF 可以在 Python 中定义并由 PySpark 运行

    在第一种情况下,UDF 将作为 Executor JVM 本身的一部分运行,因为 UDF 本身是在 Scala 中定义的。无需创建python进程。

    在第二种情况下,每个执行器都会启动一个 python 进程。数据将在 executor 和 python 之间进行序列化和反序列化以进行处理。这会导致 Spark 作业的大量性能影响和开销。

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

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

    【讨论】:

      【解决方案2】:

      Spark 运行一个与每个执行器并行的 python 进程,并在 Scala 部分(执行器)和 python 之间来回传递数据。

      这对性能和内存消耗(以及调整 spark 作业时的管理)有很多影响

      【讨论】:

        猜你喜欢
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 2022-06-23
        • 1970-01-01
        • 1970-01-01
        • 2011-08-07
        • 2020-10-06
        • 1970-01-01
        相关资源
        最近更新 更多