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,但它是一个短期和暂时的解决方法,只!