发布
社区首页 >问答首页 >StructType中熊猫UDF在火花放电中的应用及返回结果

StructType中熊猫UDF在火花放电中的应用及返回结果
EN

Stack Overflow用户
提问于 2019-02-22 16:48:58
回答 1查看 1.7K关注 0票数 4

我怎样才能驱动一个列的基础上熊猫-udf在火星雨。我编写了以下udf:

代码语言:javascript
代码运行次数:0
复制
from pyspark.sql.functions import pandas_udf, PandasUDFType

@pandas_udf("in_type string, in_var string, in_numer int", PandasUDFType.GROUPED_MAP)

def getSplitOP(in_data):
    if in_data is None or len(in_data) < 1:
        return None
    #Input/variable.12-2017
    splt=in_data.split("/",1)
    in_type=splt[0]

    splt_1=splt[1].split(".",1)
    in_var = splt_1[0]

    splt_2=splt_1[1].split("-",1)
    in_numer=int(splt_2[0])

    return (in_type, in_var, in_numer)
    #Expected output: ("input", "variable", 12)

df = df.withColumn("splt_col", getSplitOP(df.In_data))

有人能帮我找出上面的代码有什么问题,以及为什么它不起作用吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-19 06:16:41

这将起作用:

代码语言:javascript
代码运行次数:0
复制
df = spark.createDataFrame([("input/variable.12-2017",), ("output/invariable.11-2018",)], ("in_data",))
df.show()

from pyspark.sql.functions import pandas_udf, PandasUDFType

@pandas_udf("in_type string, in_var string, in_numer int", PandasUDFType.GROUPED_MAP)
def getSplitOP(pdf):
    in_data = pdf.in_data

    #Input/variable.12-2017
    splt = in_data.apply(lambda x: x.split("/",1))
    in_type = splt.apply(lambda x: x[0])

    splt_1 = splt.apply(lambda x: x[1].split(".",1))
    in_var = splt_1.apply(lambda x: x[0])

    splt_2 = splt_1.apply(lambda x: x[1].split("-",1))
    in_numer = splt_2.apply(lambda x: int(x[0]))

    return pd.DataFrame({"in_type": in_type, "in_var": in_var, "in_numer": in_numer})
    #Expected output: ("input", "variable", 12)

df = df.groupBy().apply(getSplitOP)
df.show()
  • 在@pandas_udf之后不能有空行。
  • 熊猫系列对象不直接支持字符串函数,如拆分。使用apply对每个系列按元素进行操作。
  • 为了返回多个列,您使用了一个GROUPED_MAP,但是您的代码本质上并不是按任何内容分组的。请注意,这里使用的groupBy没有任何参数。这需要将所有数据都放在一个处理器上。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54831667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档