python - 使用 spark-submit 和 BeautifulSoup 时出现 UnicodeEncodeError
问题描述
当我向 spark 1.6, hadoop 2.7 提交作业时,我在 Python 2.7 中不断收到 UnicodeEncodeError,但是当我在 pyspark shell 上逐行执行相同的代码时,我没有收到相同的错误。
我正在BeautifulSoup
使用这行代码获取所有标签并从中获取文本:
[r.text for r in BeautifulSoup(line).findAll('ref') if r.text]
我尝试了以下事情:
- 设置
export PYTHONIOENCODING="utf8"
- 利用
r.text.encode('ascii', 'ignore')
- 也试过申请
sysdefaultencoding('utf-8')
有人可以告诉我如何解决吗?下面是错误堆栈:
"/hdata/dev/sdf1/hadoop/yarn/local/usercache/harshdee/appcache/application_1551632819863_0039/container_e36_1551632819863_0039_01_000004/pyspark.zip/pyspark/serializers.py", line 263, in dump_stream
vs = list(itertools.islice(iterator, batch))
File "/home/harshdee/get_data.py", line 63, in get_as_row
return Row(citations=get_citations(line.content), id=line.id, title=line.title)
File "/home/harshdee/get_data.py", line 47, in get_citations
refs_in_line = [r.text for r in BeautifulSoup(line).findAll('ref') if r.text]
File "/usr/lib/python2.7/site-packages/bs4/__init__.py", line 274, in __init__
self._check_markup_is_url(markup)
File "/usr/lib/python2.7/site-packages/bs4/__init__.py", line 336, in _check_markup_is_url
' that document to Beautiful Soup.' % decoded_markup
File "/usr/lib64/python2.7/warnings.py", line 29, in _show_warning
file.write(formatwarning(message, category, filename, lineno, line))
File "/usr/lib64/python2.7/warnings.py", line 38, in formatwarning
s = "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 21-28: ordinal not in range(128)```
解决方案
我自己解决了这个问题。我认为问题出在字符串的表示上。
为此,我使用了repr
返回对象表示的函数。换句话说,它基本上返回一个string
统一编码的。
我将此应用于line
变量。
推荐阅读
- node.js - Mongoose 不会在本地将文档保存到我的数据库中
- python-2.7 - 如何在 Python 中解释 Unicode 符号?
- python - TTR:MACD 给出的结果与我在 Python 和图表中得到的结果不同
- android - Theme.AppCompat 移除操作栏(工具栏)
- python-3.x - 以可变批量大小加载数据?
- python - PyQt5:寻找在应用程序中嵌入外部应用程序窗口的示例
- python - 使用 Heroku 设置 S3 和使用图像设置 Django
- java - 如何向连接到 Undertow websocket 服务器的所有客户端广播消息?
- jade-platform - JSON反序列化对象处理
- visual-studio - Visual Studio 2017 登录情况