google dataproc - образ версии 2.0.x как понизить версию pyspark до 3.0.1

Использование образа dataproc версии 2.0.x в облаке Google, поскольку в этой версии образа dataproc доступна дельта 0.7.0. Однако этот экземпляр dataproc поставляется с pyspark 3.1.1 по умолчанию, Apache Spark 3.1.1 еще официально не выпущен. Таким образом, версии Delta Lake, совместимой с 3.1, нет, поэтому предлагается перейти на более раннюю версию.

Я пробовал следующее,

pip install --force-reinstall pyspark==3.0.1 

выполнил указанную выше команду как пользователь root на главном узле экземпляра dataproc, однако, когда я проверяю pyspark --version, он все еще показывает 3.1.1

как исправить версию pyspark по умолчанию до 3.0.1?


person Rak    schedule 08.02.2021    source источник


Ответы (2)


Самый простой способ использовать Spark 3.0 с Dataproc 2.0 - закрепить более старую версию образа Dataproc 2.0 (2.0.0-RC22-debian10), которая использовала Spark 3.0 до обновления до Spark 3.1, в более новые версии образов Dataproc 2.0:

gcloud dataproc clusters create $CLUSTER_NAME --image-version=2.0.0-RC22-debian10
person Igor Dvorzhak    schedule 09.02.2021

Чтобы использовать версию Spark 3.0.1, вам необходимо убедиться, что на главном и рабочем узлах в кластере Dataproc есть jar-файлы spark-3.0.1 в / usr / lib / spark / jars вместо файлов 3.1.1.

Это можно сделать двумя способами:

  1. Переместите файлы jar версии 3.0.1 вручную на каждом узле в / usr / lib / spark / jars и удалите банки версии 3.1.1. После установки pip для нужной версии pyspark вы можете найти баночки Spark в /.local/lib/python3.8/site-packages/pyspark/jars. Не забудьте перезапустить искру после этого: sudo systemctl restart spark *

  2. Вы можете использовать действия инициализации dataproc (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/init-actions?hl=en), чтобы сделать то же самое, так как тогда вам не придется использовать ssh для каждого узла и вручную менять банки.

Шаги:

  1. Загрузите обновленные jar-файлы Hadoop в папку GCS, например, gs: /// lib-updates, которая имеет ту же структуру, что и каталог / usr / lib / узлов кластера.

  2. Напишите сценарий действий инициализации, который синхронизирует обновления из GCS в локальный / usr / lib /, а затем перезапустите службы Hadoop. Загрузите скрипт в GCS, например, gs: ///init-actions-update-libs.sh.

     #!/bin/bash
    
     set -o nounset
     set -o errexit
     set -o xtrace
     set -o pipefail
    
     # The GCS folder of lib updates.
    
     LIB_UPDATES=$(/usr/share/google/get_metadata_value attributes/lib-updates)
    
     # Sync updated libraries from $LIB_UPDATES to /usr/lib
    
     gsutil rsync -r -e $LIB_UPDATES /usr/lib/
    
     # Restart spark services
     service spark-* restart
    
  3. Создайте кластер с помощью --initialization-actions $ INIT_ACTIONS_UPDATE_LIBS и --metadata lib-updates = $ LIB_UPDATES.

person Gaurangi Saxena    schedule 08.02.2021