%AddJar 加载的 Spark-cloudant 包 1.6.4 未被笔记本使用
Spark-cloudant package 1.6.4 loaded by %AddJar does not get used by notebook
我正在尝试将最新的 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
在上面的代码中,tilda 似乎没有解析到我的 HOME 文件夹。
查看工作解决方案的答案。
目前,对于带 Spark 的 DSX Notebooks,cloudant-spark
的 1.6.3 版支持开箱即用。这意味着此包的 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,以便在正确的时间将其拉出(这里有些猜测,因为我没有关于设置的完整图片!)。
作为长期解决方案,我建议您联系 spark 服务支持并提交支持新版本的请求,以便开箱即用。
作为短期解决方案(当运行时环境的设置步骤发生变化时可能不起作用),您可以执行以下操作:
- 在您的 DSX 项目中打开一个 Python 笔记本。
通过
找到您的用户 ID
!whoami
使用(USERID = 步骤 2 的输出)检查您的用户特定目录中的 Spark 库:
!ls /gpfs/fs01/user/USERID/data/libs
您会注意到 spark-cloudant
罐子在那里不存在。
将 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
使用(USERID = 步骤 2 的输出)检查用户特定目录中的 Spark 库:参见步骤 3
您会注意到那里有 spark-cloudant
版本 1.6.4 的 jar。
- 重新启动 Scala 笔记本的内核并再次尝试您的代码。
该方法对我修补 spark-cloudant
的版本有效,但它只是一个短期的临时解决方法!
运行 来自 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服务的产品管理正式升级这个库
我正在尝试将最新的 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
在上面的代码中,tilda 似乎没有解析到我的 HOME 文件夹。
查看工作解决方案的答案。
目前,对于带 Spark 的 DSX Notebooks,cloudant-spark
的 1.6.3 版支持开箱即用。这意味着此包的 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,以便在正确的时间将其拉出(这里有些猜测,因为我没有关于设置的完整图片!)。
作为长期解决方案,我建议您联系 spark 服务支持并提交支持新版本的请求,以便开箱即用。
作为短期解决方案(当运行时环境的设置步骤发生变化时可能不起作用),您可以执行以下操作:
- 在您的 DSX 项目中打开一个 Python 笔记本。
通过
找到您的用户 ID!whoami
使用(USERID = 步骤 2 的输出)检查您的用户特定目录中的 Spark 库:
!ls /gpfs/fs01/user/USERID/data/libs
您会注意到 spark-cloudant
罐子在那里不存在。
将
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
使用(USERID = 步骤 2 的输出)检查用户特定目录中的 Spark 库:参见步骤 3
您会注意到那里有 spark-cloudant
版本 1.6.4 的 jar。
- 重新启动 Scala 笔记本的内核并再次尝试您的代码。
该方法对我修补 spark-cloudant
的版本有效,但它只是一个短期的临时解决方法!
运行 来自 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服务的产品管理正式升级这个库