问题
当运行我的udf(如下所示)时,Python工作线程抛出了一个异常。
文件“C:\PATH\SparkInstallation\spark-3.3.1-bin-hadoop 3\python\lib\pyspark.zip\pyspark\serializers.py”,第471行,在加载中返回cloudpickle。加载(对象,编码=编码)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^类型错误:code()参数13必须是字符串,而不是整数
我不知道是什么原因导致了这个错误,看起来它可能是由我的代码之外的其他原因导致的。
密码
from pyspark.sql.types import StringType, ArrayType
import re
from pyspark.sql import SparkSession
import pyspark.sql.functions as pysparkfunctions
spark = SparkSession.builder.appName('test').getOrCreate()
savedTweets = spark.read.csv("testData/")
def getHashtags(string):
return re.findall(r"#(\w+)", string)
getHashtagsUDF = pysparkfunctions.udf(getHashtags, ArrayType(StringType()))
savedTweets = savedTweets.withColumn("hashtags", getHashtagsUDF(savedTweets['tweet']))
savedTweets.show()
其中savedTweets有一个名为“tweet”的列,包含tweet的文本。预期结果是第二个列,给出一个字符串数组,列出使用的hashtags。
UDF示例
给定输入“#a #B #c”,输出['a','b','c']
给定输入“a @B #c”,输出['c']
1条答案
按热度按时间cngwdvgl1#
我也有同样的错误。通过将python版本降级到3. 7解决了这个问题
编辑:它也适用于3.10.9