web-dev-qa-db-ja.com

spark 2.4.4

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)
13
Chris

汚い回避策として、_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、受け入れられた答えが示唆するように。

0
ei-grad

次のコマンドを使用して、python 3.8と互換性のあるpyinstallerの最新バージョンをインストールしてみます。

pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz

参照
https://github.com/pyinstaller/pyinstaller/issues/4265

0
mohamed_18