Spark 2.4.4 yüklendikten sonra pyspark'ı çalıştırmaya çalışırken 'TypeError: bir tamsayı gerekli (tip bayt var)' hatası nasıl düzeltilir?


16

OpenJDK 13.0.1 ve python 3.8 ve kıvılcım 2.4.4'ü yükledim. Yüklemeyi sınamak için yönergeler, kıvılcım yüklemesinin kökünden. \ Bin \ pyspark çalıştırmaktır. Kıvılcım kurulumunda bazı ortam değişkenlerini ayarlamak gibi bir adımı kaçırıp kaçırmadığımdan emin değilim, ancak daha ayrıntılı talimatlar bulamıyorum.

Makinemde python yorumlayıcısını çalıştırabilirim, bu yüzden doğru bir şekilde kurulduğundan ve "java -version" komutunun çalıştırılması bana beklenen yanıtı verdiğinden eminim, bu yüzden sorunun bunlardan herhangi biri olduğunu düşünmüyorum.

Cloudpickly.py hatalarının yığın izini alıyorum:

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)

Yanıtlar:


44

Bu oluyor, çünkü python 3.8 kullanıyorsunuz. Pyspark'ın en son pip sürümü (yazma sırasında pyspark 2.4.4) python 3.8'i desteklemez. Şimdilik python 3.7'ye geçin ve iyi olmalısınız.


Teşekkürler, bu harika!
Chris

bu benim için çalışmadı,
3.7.6'ya

1
Pyspark 2.4.4'ün python3.7.5
mork

Python 3.7.0 ile yeni bir conda ortamının çalıştığını doğrulayabilir! Teşekkürler.
J. Offenberg

3.7.7 çalıştı Onaylama
kolistivra

1

Kirli bir çözüm _cell_set_template_codeolarak, işlev doktrini tarafından önerilen sadece Python3 uygulaması ile değiştirilebilir _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()

İşte kıvılcım v2.4.5 için bir yama: https://gist.github.com/ei-grad/d311d0f34b60ebef96841a3a39103622

Uygula:

git apply <(curl https://gist.githubusercontent.com/ei-grad/d311d0f34b60ebef96841a3a39103622/raw)

Bu, ./bin/pyspark ile ilgili sorunu giderir, ancak ./bin/spark-submit, kendi cloudpickle.py kopyasıyla birlikte paketlenmiş pyspark.zip kullanır. Ve orada düzeltilecek olsaydı, o zaman hala işe yaramazdı, içindeki bir nesneyi seçerken aynı hatayla başarısız oldu pyspark/serializers.py.

Ama görünüşe göre Python 3.8 desteği v3.0.0-önizleme2'yi kıvılcımına geldi, böylece deneyebilirsiniz. Ya da, kabul edilen yanıtın önerdiği gibi, Python 3.7'ye sadık kalın.


0

Bu komutu kullanarak python 3.8 ile uyumlu olabilecek en son pyinstaller sürümünü kurmaya çalışın :

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

başvuru :
https://github.com/pyinstaller/pyinstaller/issues/4265


1
Bunu yaptım ve pysparkhala aynı hatayı veriyor
javadba

Burada aynı. Aynı hata mesajı olsa bile, bu farklı bir sorun gibi görünüyor. OP'nin sorunu olur pyspark\cloudpickle.py. PyInstaller sorunu ortaya çıkar PyInstaller\building\utils.py.
Steven
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.