簡體   English   中英

使用spark-submit和BeautifulSoup時出現UnicodeEncodeError

[英]UnicodeEncodeError while using spark-submit and BeautifulSoup

當我提交作業到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]

我嘗試了以下操作:

  1. 設置export PYTHONIOENCODING="utf8"
  2. 使用r.text.encode('ascii', 'ignore')
  3. 還嘗試應用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變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM