Невозможно импортировать pyspark в кластер dataproc на GCP
Я просто настроил кластер на Google Cloud Platform для запуска некоторых заданий pyspark. Первоначально я использовал ipython.sh (из репозитория github) в качестве сценария инициализации для кластера. Это позволило кластеру хорошо стартовать, однако при попытке импортировать pyspark в записную книжку Ipython я получил ошибку "не могу импортировать накопители имен".
После некоторых поисков я подумал, что это как-то связано с тем, что путь установки pyspark не включен в мой путь Python, поэтому я удалил свой кластер и хотел создать новый, используя jupyter.sh в качестве сценария инициализации.
Однако, теперь мой кластер вообще не запускается, я получаю сообщение об ошибке. Проверяя журнал "dataproc-initialization-script-0_output", он просто говорит:
/ usr / bin / env: bash: Нет такого файла или каталога
Есть идеи о том, что мне здесь не хватает?
Редактировать:
Я получил кластер для запуска с помощью открытого сценария инициализации в gs://dataproc-initialization-actions/jupyter/jupyter.sh
Тем не менее, я все еще сталкиваюсь с теми же проблемами при попытке загрузить pyspark в блокнот pyspark, когда я пытаюсь что-то вроде "из pyspark import SparkConf", я получаю ошибки (как ни странно, я получаю другую ошибку, если я запускаю тот же импорт второй раз).
Есть ли какие-либо отзывы на этом этапе?
Это вывод моего блокнота: вывод html блокнота
1 ответ
Последнее действие инициализации Jupyter для Dataproc было создано для таргетинга на Dataproc. --image-version 1.0
, поэтому изменение версии по умолчанию на 1.1
который включает в себя Spark 2.0.0, по-видимому, молча сломал ядро PySpark (к сожалению, вместо ошибок во время развертывания ядру PySpark просто не удается создать правильную среду Spark).
На самом деле щедрый участник действительно отправил запрос на извлечение, когда Dataproc 1.1 уже собирался стать по умолчанию, но в ходе обзора команда Dataproc хотела реорганизовать сценарий для лучшей проверки на будущее без явного хранения отдельных веток конфигураций ядра.
Я пошел дальше и поднял запрос на рефакторинг, который позволяет генератору базового ядра работать как с Dataproc 1.0, так и с Dataproc 1.1. Как только это объединено, новые кластеры, использующие стандарт gs://dataproc-initialization-actions/jupyter/jupyter.sh
автоматически начнет работать правильно. А пока вы можете сделать одну из двух вещей:
Попробуйте вернуться к Dataproc 1.0 / Spark 1.6.2:
gcloud dataproc clusters create --initialization-actions gs://dataproc-initialization-actions/jupyter/jupyter.sh \ --image-version 1.0
Попробуйте мои обновления на месте (и, таким образом, сохраните самую свежую версию Dataproc 1.1 + Spark 2.0.0), прежде чем она будет объединена с основной веткой разработки:
gcloud dataproc clusters create --initialization-actions gs://dataproc-initialization-actions/jupyter/jupyter.sh \ --metadata INIT_ACTIONS_REPO=https://github.com/dennishuo/dataproc-initialization-actions.git,INIT_ACTIONS_BRANCH=dhuo-fix-jupyter-spark2