首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PySpark中创建一个返回字符串数组的自定义函数?

问如何在PySpark中创建一个返回字符串数组的自定义函数?
EN

Stack Overflow用户
提问于 2017-12-07 04:27:32
回答 0查看 39.2K关注 0票数 26

我有一个返回字符串列表的udf。这应该不会太难。我在执行udf时传入了数据类型,因为它返回一个字符串数组:ArrayType(StringType)。

现在,不知何故,这不起作用:

我正在操作的数据帧是df_subsets_concat,如下所示:

代码语言:javascript
复制
df_subsets_concat.show(3,False)
代码语言:javascript
复制
+----------------------+
|col1                  |
+----------------------+
|oculunt               |
|predistposed          |
|incredulous           |
+----------------------+
only showing top 3 rows

代码是

代码语言:javascript
复制
from pyspark.sql.types import ArrayType, FloatType, StringType

my_udf = lambda domain: ['s','n']
label_udf = udf(my_udf, ArrayType(StringType))
df_subsets_concat_with_md = df_subsets_concat.withColumn('subset', label_udf(df_subsets_concat.col1))

结果就是

代码语言:javascript
复制
/usr/lib/spark/python/pyspark/sql/types.py in __init__(self, elementType, containsNull)
    288         False
    289         """
--> 290         assert isinstance(elementType, DataType), "elementType should be DataType"
    291         self.elementType = elementType
    292         self.containsNull = containsNull

AssertionError: elementType should be DataType

我的理解是这是做这件事的正确方法。以下是一些资源:pySpark Data Frames "assert isinstance(dataType, DataType), "dataType should be DataType" How to return a "Tuple type" in a UDF in PySpark?

但是这两个都不能帮助我解决为什么它不工作的问题。我使用的是pyspark 1.6.1。

如何在pyspark中创建一个返回字符串数组的udf?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47682927

复制
相关文章

相似问题

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