Пакет Spark-cloudant 1.6.4, загруженный%AddJar, не используется ноутбуком
Я пытаюсь использовать последнюю версию пакета spark-cloudant с ноутбуком:
%AddJar -f https://github.com/cloudant-labs/spark-cloudant/releases/download/v1.6.4/cloudant-spark-v1.6.4-167.jar
Какие выводы:
Starting download from https://github.com/cloudant-labs/spark-cloudant/releases/download/v1.6.4/cloudant-spark-v1.6.4-167.jar
Finished download of cloudant-spark-v1.6.4-167.jar
С последующим:
val dfReader = sqlContext.read.format("com.cloudant.spark")
dfReader.option("cloudant.host", sourceDB.host)
if (sourceDB.username.isDefined && sourceDB.username.get.nonEmpty) dfReader.option("cloudant.username", sourceDB.username.get)
if (sourceDB.password.isDefined && sourceDB.password.get.nonEmpty) dfReader.option("cloudant.password", sourceDB.password.get)
val df = dfReader.load(sourceDB.database).cache()
Какие выводы:
Use connectorVersion=1.6.3, dbName=ratingdb, indexName=null, viewName=null,jsonstore.rdd.partitions=5, + jsonstore.rdd.maxInPartition=-1,jsonstore.rdd.minInPartition=10, jsonstore.rdd.requestTimeout=900000,bulkSize=20, schemaSampleSize=1
Разъем 1.6.3. Моя записная книжка:
Scala 2.10 with Spark 1.6
Я попытался перезапустить ядро, но это не помогло.
Другая отладочная информация:
Server Information:
You are using Jupyter notebook.
The version of the notebook server is 4.2.0 and is running on:
Python 2.7.11 (default, Jun 24 2016, 12:41:03)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]
Current Kernel Information:
IBM Spark Kernel
Обновить
Я попробовал следующее:
import sys.process._
"test -d ~/data/libs/scala-2.10" #|| "mkdir -p ~/data/libs/scala-2.10" !
"wget -c -O ~/data/libs/scala-2.10/cloudant-spark-v1.6.4-167.jar https://github.com/cloudant-labs/spark-cloudant/releases/download/v1.6.4/cloudant-spark-v1.6.4-167.jar" !
"ls ~/data/libs/scala-2.10/" !
println("Now restart the kernel")
К сожалению, это не сработало - 1.6.3 все еще используется.
Обновление 2
Похоже, что тильда не была разрешена в моей папке HOME в приведенном выше коде.
Смотрите ответ для рабочего решения.
2 ответа
Запуск следующего кода из записной книжки Scala работал для меня:
import sys.process._
val HOME = sys.env("HOME")
val DESTDIR = s"${HOME}/data/libs/scala-2.10"
s"test -d ${DESTDIR}" #|| s"mkdir -p ${DESTDIR}" !
s"wget -q -c -O ${DESTDIR}/cloudant-spark-v1.6.4-167.jar https://github.com/cloudant-labs/spark-cloudant/releases/download/v1.6.4/cloudant-spark-v1.6.4-167.jar" !
s"ls ${DESTDIR}/" !
Я также запросил управление продуктами для сервиса spark, чтобы официально обновить эту библиотеку.
В настоящее время для ноутбуков DSX с Spark, версия 1.6.3 cloudant-spark
поддерживается из коробки. Это означает, что банка для этого пакета предоставляется на gpfs
и путь к банке был добавлен к различным переменным среды, так что во время запуска ядра он будет добавлен в среду выполнения.
Когда вы используете %AddJar
Волшебство возможно, что это не будет работать, чтобы перегрузить более старую версию, из-за реализации волшебства и местоположения пути загрузки, см. https://github.com/ibm-et/spark-kernel/wiki/List-of-Current-Magics-for-the-Spark-Kernel.
Настройка среды выполнения (в том числе для Spark) включает добавление различных jar-файлов на разных этапах, так что если вы хотите использовать версию 1.6.4 из spark-cloudant
Вам нужно будет попытаться найти местоположение на gpfs, чтобы выгрузить банку, чтобы он был извлечен в нужное время (некоторые догадываются здесь, потому что у меня нет полной картинки на установке!).
В качестве долгосрочного решения я бы предложил вам обратиться в службу поддержки spark и отправить запрос на поддержку новой версии, чтобы он был предоставлен "из коробки".
В качестве краткосрочного решения (может не работать при изменении шагов настройки среды выполнения), вы можете сделать следующее:
- Откройте в своем проекте DSX блокнот Python.
Узнайте свой USERID с
!whoami
Проверьте пользовательский каталог для библиотек Spark с помощью (USERID = вывод из шага 2):
!ls /gpfs/fs01/user/USERID/data/libs
Вы заметите, что spark-cloudant
кувшина там нет.
Дамп новой версии
spark-cloudant
в пользовательский каталог для библиотек Spark (USERID = вывод из шага 2):!wget https://github.com/cloudant-labs/spark-cloudant/releases/download/v1.6.4/cloudant-spark-v1.6.4-167.jar -P /gpfs/fs01/user/USERID/data/libs
Проверьте свой пользовательский каталог для библиотек Spark с помощью (USERID = вывод из шага 2): см. Шаг 3
Вы заметите, что spark-cloudant
фляга для версии 1.6.4 там присутствует.
- Перезапустите ядро своей записной книжки Scala и попробуйте снова свой код.
Подход сработал для меня, чтобы патч версии spark-cloudant
Однако это краткосрочный и временный обходной путь, только!