spark:在spark udf函数中使用的worker中安装libary

0yg35tkg  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(253)

我的目标是创建一个udf函数并在我的sparksql查询中使用它下面是我的代码:

def get_datediff(datepart, startdatetime, enddatetime):
    from alc.utils import date
    from datetime import datetime
    from dateutil.relativedelta import relativedelta

    try:
        date1 = datetime.strptime(startdatetime, '%Y-%m-%d %H:%M:%S')
        date2 = datetime.strptime(enddatetime, '%Y-%m-%d %H:%M:%S')
        r = relativedelta(date1, date2)

        if datepart == "day":
            return r.days
        if datepart == "week":
            return r.weeks
        if datepart == "month":
            return r.months
        if datepart == "year":
            return r.years
    except Exception as e:
        return None

from pyspark.sql.types import IntegerType
spark.udf.register("get_datediff", get_datediff, IntegerType())

在我的sparksql中:

SELECT get_datediff("day","2020-08-07 16:21:27", "2020-08-08 16:21:27")

当我在python中执行函数时,它工作正常并返回正确的结果,但是当我尝试在spark udf函数中注册时,它返回:importerror:没有名为dateutil.relativedelta的模块
python dateutil已经安装,但我认为spark的workers中不存在这个库

但是当我创建了一个独立的spark会话时,它运行得很好,

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题