如何在Spark Notebook中导入库

时间:2017-03-09 03:41:34

标签: scala apache-spark spark-notebook magellan

我在火花笔记本中导入magellan-1.0.4-s_2.11时遇到问题。我已经从https://spark-packages.org/package/harsha2010/magellan下载了jar,并尝试将SPARK_HOME/bin/spark-shell --packages harsha2010:magellan:1.0.4-s_2.11放在bin文件夹的spark-notebook文件的Start of Customized Settings部分。

这是我的导入

import magellan.{Point, Polygon, PolyLine}
import magellan.coord.NAD83
import org.apache.spark.sql.magellan.MagellanContext
import org.apache.spark.sql.magellan.dsl.expressions._
import org.apache.spark.sql.Row
import org.apache.spark.sql.types._

我的错误......

<console>:71: error: object Point is not a member of package org.apache.spark.sql.magellan
       import magellan.{Point, Polygon, PolyLine}
              ^
<console>:72: error: object coord is not a member of package org.apache.spark.sql.magellan
       import magellan.coord.NAD83
                       ^
<console>:73: error: object MagellanContext is not a member of package org.apache.spark.sql.magellan
       import org.apache.spark.sql.magellan.MagellanContext

然后我尝试将新库像任何其他库一样导入main script,如下所示:

$lib_dir/magellan-1.0.4-s_2.11.jar"

这不起作用,我在摸不着头脑,想知道我做错了什么。如何将magellan等库导入spark笔记本?

3 个答案:

答案 0 :(得分:1)

尝试评估类似

的内容
:dp "harsha2010" % "magellan" % "1.0.4-s_2.11"

它会将库加载到Spark中,允许它被import编辑 - 假设它可以通过Maven仓库获得。在我的情况下,它失败了一条消息:

failed to load 'harsha2010:magellan:jar:1.0.4-s_2.11 (runtime)' from ["Maven2 local (file:/home/dev/.m2/repository/, releases+snapshots) without authentication", "maven-central (http://repo1.maven.org/maven2/, releases+snapshots) without authentication", "spark-packages (http://dl.bintray.com/spark-packages/maven/, releases+snapshots) without authentication", "oss-sonatype (https://oss.sonatype.org/content/repositories/releases/, releases+snapshots) without authentication"] into /tmp/spark-notebook/aether/b2c7d8c5-1f56-4460-ad39-24c4e93a9786

我认为文件很大,连接被中断,然后才能下载整个文件。

解决方法

所以我从以下地方手动下载了JAR:

http://dl.bintray.com/spark-packages/maven/harsha2010/magellan/1.0.4-s_2.11/

并将其复制到:

/tmp/spark-notebook/aether/b2c7d8c5-1f56-4460-ad39-24c4e93a9786/harsha2010/magellan/1.0.4-s_2.11

然后:dp命令工作。尝试先调用它,如果失败则将JAR复制到正确的路径以使其工作。

更好的解决方案

我应该调查为什么下载首先无法修复它...或者将该库放在我当地的M2回购中。但这应该让你前进。

答案 1 :(得分:1)

我建议检查一下:

https://github.com/spark-notebook/spark-notebook/blob/master/docs/metadata.md#import-download-dependencies

https://github.com/spark-notebook/spark-notebook/blob/master/docs/metadata.md#add-spark-packages

我认为:dp magic命令已弃用,您应该在笔记本元数据中添加自定义依赖项。您可以进入菜单编辑&gt;编辑笔记本元数据,添加如下内容:

"customDeps": [
   "harsha2010 % magellan % 1.0.4-s_2.11"
]

完成后,您将需要重新启动内核,您可以在浏览器控制台中检查是否正确下载了包。

答案 2 :(得分:0)

简单来说,您应该设置或添加 EXTRA_CLASSPATH environnent变量以指向您下载的 .jar 文件:  wondows OS中的export EXTRA_CLASSPATH = </link/to/your.jar>set EXTRA_CLASSPATH= </link/to/your.jar>Here find the detailed solution