1

ノートブックで最新の 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 フォルダーに解決されていないようです。

実用的なソリューションについては、回答を参照してください。

4

2 に答える 2

1

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 サービスの製品管理にも依頼しました。

于 2017-01-04T12:36:10.520 に答える
1

現在、Spark を使用する DSX ノートブックの場合、バージョン 1.6.3cloudant-sparkがすぐにサポートされます。つまり、このパッケージの jar が で提供されgpfs、jar へのパスがさまざまな環境変数に追加されているため、カーネルの起動中にランタイム環境に追加されます。

マジックを使用する場合、%AddJarマジックの実装とダウンロード パスの場所が原因で、古いバージョンのオーバーロードが機能しない可能性があります。https://github.com/ibm-et/spark-kernelを参照してください。 /wiki/List-of-Current-Magics-for-the-Spark-Kernel .

ランタイム環境 (Spark を含む) のセットアップには、さまざまなステップでのさまざまな jar の追加が含まれますspark-cloudant。 jar をダンプして、適切なタイミングでプルされるようにします (セットアップの全体像がわからないため、ここで推測する人もいます!)。

長期的な解決策として、spark サービスのサポートに連絡し、新しいバージョンをサポートするリクエストを送信して、すぐに使用できるようにすることをお勧めします。

短期的な解決策 (ランタイム環境のセットアップ手順が変更されている場合は機能しない可能性があります) として、次のことができます。

  1. DSX プロジェクトで Python ノートブックを開きます。
  2. あなたのUSERIDを見つけてください

    !whoami

  3. (USERID = ステップ 2 の出力) を使用して、Spark ライブラリのユーザー固有のディレクトリを確認します。

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

spark-cloudantjar がそこにないことに気付くでしょう。

  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. (USERID = ステップ 2 からの出力) を使用して、Spark ライブラリのユーザー固有のディレクトリを確認します。ステップ 3 を参照してください。

spark-cloudantバージョン 1.6.4 の jar がそこにあることがわかります。

  1. Scala ノートブックのカーネルを再起動して、コードをもう一度試してください。

このアプローチは、 のバージョンにパッチを適用するのに役立ちましたがspark-cloudant、これは短期的かつ一時的な回避策でしかありません。

于 2017-01-04T10:31:03.563 に答える