Apache spark 使用Spark submit对Spark RDD执行NLTK时出错
我已经将pyspark_python设置为python3,我想在Spark RDD上执行NLTK。 但在执行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
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())