OpenJDK 13.0.1とpython 3.8とspark 2.4.4をインストールしました。インストールをテストする手順は、。\ bin\pysparkをsparkインストールのルートです。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)
汚い回避策として、_cell_set_template_code
をPython3のみの実装に置き換えることができます 推奨_make_cell_set_template_code
関数のdocstringによって:
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()
spark v2.4.5: https://Gist.github.com/ei-grad/d311d0f34b60ebef96841a3a39103622 のパッチは次のとおりです。
次の方法で適用します。
git apply <(curl https://Gist.githubusercontent.com/ei-grad/d311d0f34b60ebef96841a3a39103622/raw)
これにより、。/ bin/pysparkの問題が修正されますが、。/ bin/spark-submitは、独自のcloudpickle.pyのコピーとともにバンドルされたpyspark.Zipを使用します。そして、そこで修正されると、それでも機能せず、pyspark/serializers.py
の一部のオブジェクトのunpickle中に同じエラーで失敗します。
しかし、Python 3.8のサポートはすでにspark v3.0.0-preview2に到達しているため、試してみることができます。または、Python 3.7、受け入れられた答えが示唆するように。
次のコマンドを使用して、python 3.8と互換性のあるpyinstallerの最新バージョンをインストールしてみます。
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz