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

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

  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 фляга для версии 1.6.4 там присутствует.

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

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

Другие вопросы по тегам