Установка пакета graphframes в автономном кластере Spark

У меня есть автономный кластер pyspark (без доступа к Интернету), где мне нужно установить библиотеку graphframes.

Я вручную загрузил банку из здесь, добавил в $SPARK_HOME/jars/, а затем, когда Я пытаюсь использовать его, я получаю следующую ошибку:

error: missing or invalid dependency detected while loading class file 'Logging.class'.
Could not access term typesafe in package com,
because it (or its dependencies) are missing. Check your build definition for
missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
A full rebuild may help if 'Logging.class' was compiled against an incompatible version of com.
error: missing or invalid dependency detected while loading class file 'Logging.class'.
Could not access term scalalogging in value com.typesafe,
because it (or its dependencies) are missing. Check your build definition for
missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
A full rebuild may help if 'Logging.class' was compiled against an incompatible version of com.typesafe.
error: missing or invalid dependency detected while loading class file 'Logging.class'.
Could not access type LazyLogging in value com.slf4j,
because it (or its dependencies) are missing. Check your build definition for
missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
A full rebuild may help if 'Logging.class' was compiled against an incompatible version of com.slf4j.

Каков правильный способ автономной установки со всеми зависимостями?


person Michail N    schedule 31.10.2018    source источник


Ответы (1)


Мне удается установить библиотеку графических кадров. Прежде всего, я нашел зависимости от графических фреймов, где:

scala-logging-api_xx-xx.jar
scala-logging-slf4j_xx-xx.jar

где xx — правильные версии для scala и версии jar. Затем я установил их по правильному пути. Поскольку я работаю на машине Cloudera, правильный путь:

/opt/cloudera/parcels/SPARK2/lib/spark2/jars/

Если вы не можете разместить их в этом каталоге в своем кластере (потому что у вас нет root-прав, а ваш админ очень ленивый), вы можете просто добавить в свой spark-submit/spark-shell

spark-submit ..... --driver-class-path /path-for-jar/  \
                   --jars /../graphframes-0.5.0-spark2.1-s_2.11.jar,/../scala-logging-slf4j_2.10-2.1.2.jar,/../scala-logging-api_2.10-2.1.2.jar

Это работает для Scala. Чтобы использовать графические фреймы для python, вам нужно загрузить jar графических фреймов, а затем через оболочку

#Extract JAR content
 jar xf graphframes_graphframes-0.3.0-spark2.0-s_2.11.jar
#Enter the folder
 cd graphframes
#Zip the contents
 zip graphframes.zip -r *

А затем добавьте заархивированный файл в свой путь к python в spark-env.sh или в свой bash_profile с помощью

export PYTHONPATH=$PYTHONPATH:/..proper path/graphframes.zip:.

Затем открытие оболочки/отправка (опять же с теми же аргументами, что и в scala), импорт графических кадров работает нормально.

Эта ссылка оказалась чрезвычайно полезной для этого решения.

person Michail N    schedule 02.11.2018