Как запустить графические кадры на искре на pyspark на juypter на докере?

Играл с pyspark на juypter весь день без проблем. Просто используя образ докера juypter/pyspark-notebook, я упаковываю 90% всего, что мне нужно (УРА!)

Я хотел бы начать изучение с GraphFrames, который находится поверх GraphX, который находится поверх Spark. У кого-нибудь заработала эта комбинация?

По сути, согласно документации, мне просто нужно передать --packages graphframes: xxyyzz при запуске pyspark для загрузки и запуска графических кадров. Проблема в том, что соковыжималка уже работает, как только контейнер поднимается.

Я пробовал передать строку --packages в качестве переменной среды (-e) как для JUYPTER_SPARK_OPTS, так и для SPARK_OPTS при запуске docker run, и это не сработало. Я обнаружил, что могу делать pip install graphframes с терминала, что помогает мне частично - библиотеки python установлены, но библиотеки java не являются java.lang.ClassNotFoundException: org.graphframes.GraphFramePythonAPI .

В документации по изображениям нет Похоже, что предлагает какие-либо идеи о том, как развернуть пакет Spark в образ.

Есть ли какое-то место, чтобы закинуть graphframes .jar? Есть ли команда для установки post-docker пакета Spark? Есть ли у docker run волшебный аргумент, который установил бы это?

Бьюсь об заклад, на этот вопрос есть очень простой ответ - или я здесь в большом хлопке?

Использованная литература:


person W. Smith    schedule 25.11.2020    source источник


Ответы (1)


Так что ответ был довольно прост:

Из сути здесь нам нужно просто указать juypter, чтобы он добавил строку --packages в SPARK_SUBMIT с что-то вроде этого в верхней части моей записной книжки. Spark выходит и устанавливает пакет при захвате контекста:

import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages graphframes:graphframes:0.8.1-spark3.0-s_2.12 pyspark-shell'

Следите за версиями, доступными в пакете графических фреймов, который на данный момент означает графические фреймы 0.8.1 на Spark 3.0 на Scala 2.12.

person W. Smith    schedule 30.11.2020