typeError:不支持Decoding str'在UDF Pyspark中串联时
我正在尝试创建一个简单的UDF,该UDF连接2个字符串和一个分离器。
def stringConcat(separator: str, first: str, second: str):
return first + separator + second
spark.udf.register("stringConcat_udf", stringConcat)
customerDf.select("firstname", "lastname", stringConcat_udf(lit("-"),"firstname",
"lastname")).show()
这是追溯:
从UDF抛出了一个例外:“ TypeError:不支持Decoding str”。完整的追溯
下图:
TypeError:不支持Decoding str
这有什么问题?
I'm trying to create a simple UDF that concatenates 2 strings and a separator.
def stringConcat(separator: str, first: str, second: str):
return first + separator + second
spark.udf.register("stringConcat_udf", stringConcat)
customerDf.select("firstname", "lastname", stringConcat_udf(lit("-"),"firstname",
"lastname")).show()
This is the traceback:
An exception was thrown from a UDF: 'TypeError: decoding str is not supported'. Full traceback
below:
TypeError: decoding str is not supported
What is wrong with this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一方面,PySpark已经具有一个名为
concat_ws
的函数( docs )仅能做到这一点:但是,如果您仍然想定义此udf,则
spark.udf.register(“ strignconconcat_udf”,strintconcat)
在任何地方都没有存储,这意味着它可以在Spark查询中使用,但是您需要将其定义以与PySpark DataFrames一起使用( docs ):For one thing, PySpark already has a function called
concat_ws
(docs) which does just that:But if you still want to define this UDF, the
spark.udf.register("stringConcat_udf", stringConcat)
isn't stored anywhere, which means it's usable in spark queries, but you'd need to define it to use with pyspark dataframes (docs):注册UDF后,您可以使用
expr
调用它。尝试以下操作:这有效:
After registering your UDF, you can call it using
expr
. Try this:This works: