首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由%AddJar加载的星火云包1.6.4不被笔记本所用

由%AddJar加载的星火云包1.6.4不被笔记本所用
EN

Stack Overflow用户
提问于 2016-12-25 18:54:22
回答 2查看 126关注 0票数 1

我正在尝试使用最新的星火云包和笔记本电脑:

代码语言:javascript
复制
%AddJar -f https://github.com/cloudant-labs/spark-cloudant/releases/download/v1.6.4/cloudant-spark-v1.6.4-167.jar

其中产出:

代码语言:javascript
复制
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

其次是:

代码语言:javascript
复制
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()

其中产出:

代码语言:javascript
复制
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。我的笔记本是:

代码语言:javascript
复制
Scala 2.10 with Spark 1.6

我尝试过重新启动内核,但这并没有帮助。

其他调试信息:

代码语言:javascript
复制
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

更新

我尝试了以下几点:

代码语言:javascript
复制
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

在上面的代码中,tilda似乎没有被解析到我的主文件夹。

请参阅工作解决方案的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-04 12:36:10

从scala笔记本上运行以下代码对我有用:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-01-04 10:31:03

目前,对于带有Spark的DSX笔记本,支持版本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,因此如果您的目标是使用spark-cloudant的1.6.4版本,那么您必须尝试在gpfs上找到一个位置来转储jar,以便在正确的时间(这里有些猜测,因为我在设置上没有完整的图片!)。

作为长期解决办法,我建议你向火花服务提供支持,并提交一份支持新版本的请求,以便将其提供开箱即用。

由于短期解决方案(当运行时环境的设置步骤发生更改时可能无法工作),您可以执行以下操作:

  1. 在DSX项目中打开一个Python笔记本。
  2. 查找您的用户out !whoami
  3. 检查您的用户特定目录中的Spark (USERID =步骤2中的输出): !ls /gpfs/fs01/user/USERID/data/libs

您将注意到,spark-cloudant jar不存在。

  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

您将注意到版本1.6.4的spark-cloudant jar就在这里。

  1. 重新启动Scala笔记本的内核,然后再试一次代码。

这种方法对我来说是有效的,我可以修补spark-cloudant的版本,但是这只是一个短期和暂时的解决办法!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41323724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档