1

我想用筆記本採用最新的火花cloudant包:火花cloudant包1.6.4不習慣於通過筆記本

%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

看來,蒂爾達沒有得到上面的代碼解決了我家的文件夾。

查看工作解決方案的答案。

回答

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}/" ! 

我也要求產品管理的火花服務正式升級這個庫。

1

當前,對於帶有Spark的DSX筆記本,cloudant-spark的1.6.3版本支持開箱即用。這意味着在gpfs上提供了該軟件包的jar,並將jar的路徑添加到各種環境變量中,以便在啓動內核時將其添加到運行時環境。

當您使用%AddJar魔法時,由於神奇的實現和下載路徑的位置,請參閱https://github.com/ibm-et/spark-kernel/wiki/List-of-Current-Magics-for-the-Spark-Kernel,可能無法使舊版本過載。

運行時環境(包括Spark)的設置包括在不同步驟中添加各種罐子,所以如果您的目標是使用spark-cloudant版本1.6.4,則必須嘗試查找在gpfs上的位置來轉儲jar,這樣它就會在正確的時間被拉出(這裏有一些猜測,因爲我沒有完整的設置圖片!)。

作爲一個長期的解決方案,我建議您接觸到對火花服務的支持並提交支持新版本的請求,以便將其提供開箱即用。

作爲一個短期的解決辦法(當運行時環境的設置步驟正在改變可能無法正常工作),你可以做到以下幾點:

  1. 打開您的DSX項目Python的筆記本電腦。
  2. 找出與

    !whoami

  3. 您USERID檢查星火庫用戶特定的目錄中(USERID =從第2步輸出):

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

你會注意到spark-cloudant罐子不在那裏。

  • 轉儲的spark-cloudant較新的版本,以用於火花庫(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

  • 檢查用戶用於與(USERID =來自步驟2輸出)火花庫特定目錄:請參閱步驟3

  • 你會發現,spark-cloudant罐子1.6.4版本是目前在那裏。

    1. 重新啓動Scala筆記本的內核並再次嘗試您的代碼。

    該方法爲我修補版本spark-cloudant,但它是一個短期和暫時的解決方法,只!