Chr*_*ris 4 apache-spark pyspark
我已经安装了OpenJDK 13.0.1,python 3.8和spark 2.4.4。测试安装的说明是从spark安装的根目录运行。\ bin \ pyspark。我不确定是否错过了spark安装步骤,例如设置一些环境变量,但是找不到更多详细说明。
我可以在我的机器上运行python解释器,因此我确信它已正确安装,并且运行“ java -version”可以提供预期的响应,因此我认为这两个问题都不是问题。
我从cloudpickly.py中获得了错误的堆栈跟踪:
Traceback (most recent call last):
File "C:\software\spark-2.4.4-bin-hadoop2.7\bin\..\python\pyspark\shell.py", line 31, in <module>
from pyspark import SparkConf
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\__init__.py", line 51, in <module>
from pyspark.context import SparkContext
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\context.py", line 31, in <module>
from pyspark import accumulators
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\accumulators.py", line 97, in <module>
from pyspark.serializers import read_int, PickleSerializer
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\serializers.py", line 71, in <module>
from pyspark import cloudpickle
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\cloudpickle.py", line 145, in <module>
_cell_set_template_code = _make_cell_set_template_code()
File "C:\software\spark-2.4.4-bin-hadoop2.7\python\pyspark\cloudpickle.py", line 126, in _make_cell_set_template_code
return types.CodeType(
TypeError: an integer is required (got type bytes)
Run Code Online (Sandbox Code Playgroud)
Ani*_*non 14
正如约翰正确指出的那样,它的 python 和 pyspark 版本不匹配。对于较新的python版本,您可以尝试,
pip install --upgrade pyspark
Run Code Online (Sandbox Code Playgroud)
这将更新包,如果有的话。如果这没有帮助,那么您可能必须降级到兼容的 python 版本。
pyspark
包文档明确指出:
注意:如果您将它与 Spark 独立集群一起使用,您必须确保版本(包括次要版本)匹配,否则您可能会遇到奇怪的错误。
python 3.8 的问题已在最新版本中得到解决。我收到此错误是因为我的 scikit-learn 版本非常过时
pip install scikit-learn --upgrade
Run Code Online (Sandbox Code Playgroud)
解决了问题
发生这种情况是因为您使用的是python 3.8。pyspark的最新pip版本不支持python 3.8。现在降级到python 3.7,应该没问题。
作为一种肮脏的解决方法,可以将 替换为函数文档字符串建议的_cell_set_template_code
仅 Python3 实现:_make_cell_set_template_code
Notes
-----
In Python 3, we could use an easier function:
.. code-block:: python
def f():
cell = None
def _stub(value):
nonlocal cell
cell = value
return _stub
_cell_set_template_code = f()
Run Code Online (Sandbox Code Playgroud)
这是spark v2.4.5的补丁:https://gist.github.com/ei-grad/d311d0f34b60ebef96841a3a39103622
通过以下方式应用它:
git apply <(curl https://gist.githubusercontent.com/ei-grad/d311d0f34b60ebef96841a3a39103622/raw)
Run Code Online (Sandbox Code Playgroud)
这解决了 ./bin/pyspark 的问题,但 ./bin/spark-submit 使用捆绑的 pyspark.zip 及其自己的 cloudpickle.py 副本。如果它在那里得到修复,那么它仍然无法工作,在 unpickling 中的某些对象时会因相同的错误而失败pyspark/serializers.py
。
不过 Spark v3.0.0-preview2 似乎已经支持 Python 3.8,所以可以尝试一下。或者,坚持使用 Python 3.7,就像已接受的答案所建议的那样。
归档时间: |
|
查看次数: |
632 次 |
最近记录: |