Apache spark 使用Spark submit对Spark RDD执行NLTK时出错

Apache spark 使用Spark submit对Spark RDD执行NLTK时出错,apache-spark,pyspark,nltk,Apache Spark,Pyspark,Nltk,我已经将pyspark_python设置为python3,我想在Spark RDD上执行NLTK。 但在执行NLTK时,错误如下所示 File "/home/user/.local/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py", line 1881, in <listcomp> if form.endswith(old) TypeError: endswith first arg must be bytes

我已经将pyspark_python设置为python3,我想在Spark RDD上执行NLTK。 但在执行NLTK时,错误如下所示

  File "/home/user/.local/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py", line 1881, in <listcomp>
if form.endswith(old)
TypeError: endswith first arg must be bytes or a tuple of bytes, not str
文件“/home/user/.local/lib/python3.6/site packages/nltk/corpus/reader/wordnet.py”,第1881行,在
if form.endswith(旧)
TypeError:endswith first arg必须是字节或字节元组,而不是str

当我在HDP集群上运行spark应用程序时,它运行得很好,但在本地系统spark submit上不起作用。

看起来
old
属于
str

old.encode()
将其转换为字节

试一试

在Python3中,
unicode(str)
对象和
字节
对象之间没有隐式转换。如果您知道输出的编码,您可以
.decode()
将其转换为字符串,也可以使用
“\n”将要添加到字节中的
\n
打开。编码('ascii')

因此,在需要将str转换为字节的地方,请使用
.encode()

在需要将“是”转换为str的地方,使用
.decode()

可以发布创建
表单
变量的代码吗?我正在使用以下代码
def引理(x)对Spark RDD执行NLTK:
导入NLTK`'NLTK.download('wordnet'))`
从nltk.stem导入WordNetLemmatizer
lemmatizer=WordNetLemmatizer()
返回lemmatizer.lemmatize(x)
数据=sc.textFile(hdfs\u src\u dir,use\u unicode=False)
我已经在nltk库文件中应用了这个解决方案,但现在它给出了以下错误<代码>类型错误:无法将str转换为字节
为什么代码中没有
旧的
@Achyutvyas是NLTK图书馆的一部分。
if form.endswith(old.encode())