Пакет 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 в приведенном выше коде.

Смотрите ответ для рабочего решения.


person Chris Snow    schedule 25.12.2016    source источник


Ответы (2)


В настоящее время для ноутбуков DSX со Spark версия 1.6.3 cloudant-spark поддерживается по умолчанию. Это означает, что jar для этого пакета предоставляется на gpfs, и путь к jar был добавлен в различные переменные среды, так что при запуске ядра он будет добавлен в среду выполнения.

При использовании магии %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 и отправить запрос на поддержку новой версии, чтобы она была предоставлена ​​из коробки.

В качестве краткосрочного решения (может не сработать при изменении шагов установки среды выполнения) вы можете сделать следующее:

  1. Откройте в своем проекте DSX блокнот Python.
  2. Узнайте свой USERID с помощью

    !whoami

  3. Проверьте свой пользовательский каталог на наличие библиотек Spark с помощью (USERID = вывод из шага 2):

    !ls /gpfs/fs01/user/USERID/data/libs

Вы заметите, что банки spark-cloudant там нет.

  1. Скопируйте более новую версию 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

  2. Проверьте свой пользовательский каталог на наличие библиотек Spark с помощью (USERID = вывод из шага 2): см. шаг 3.

Вы заметите, что там присутствует spark-cloudant jar для версии 1.6.4.

  1. Перезапустите ядро ​​вашего ноутбука Scala и повторите попытку.

Подход сработал для меня, чтобы исправить версию spark-cloudant, однако это только краткосрочный и временный обходной путь!

person Sven Hafeneger    schedule 04.01.2017

У меня сработал следующий код из блокнота 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 с просьбой официально обновить эту библиотеку.

person Chris Snow    schedule 04.01.2017