我正在努力将jar中的类加载到scala-spark内核jupyter笔记本中。我在这个地方有jar: /home/hadoop/src/main/scala/com/linkedin/relevance/isolationforest/
内容如下:
-rwx------ 1 hadoop hadoop 7170 Sep 11 20:54 BaggedPoint.scala
-rw-rw-r-- 1 hadoop hadoop 186719 Sep 11 21:36 isolation-forest_2.3.0_2.11-1.0.1.jar
-rw-rw-r-- 1 hadoop hadoop 1482 Sep 11 21:36 isolation-forest_2.3.0_2.11-1.0.1-javadoc.jar
-rw-rw-r-- 1 hadoop hadoop 20252 Sep 11 21:36 isolation-forest_2.3.0_2.11-1.0.1-sources.jar
-rwx------ 1 hadoop hadoop 16133 Sep 11 20:54 IsolationForestModelReadWrite.scala
-rwx------ 1 hadoop hadoop 5740 Sep 11 20:54 IsolationForestModel.scala
-rwx------ 1 hadoop hadoop 4057 Sep 11 20:54 IsolationForestParams.scala
-rwx------ 1 hadoop hadoop 11301 Sep 11 20:54 IsolationForest.scala
-rwx------ 1 hadoop hadoop 7990 Sep 11 20:54 IsolationTree.scala
drwxrwxr-x 2 hadoop hadoop 157 Sep 11 21:35 libs
-rwx------ 1 hadoop hadoop 1731 Sep 11 20:54 Nodes.scala
-rwx------ 1 hadoop hadoop 854 Sep 11 20:54 Utils.scala
当我尝试这样加载isolationforest类时: import com.linkedin.relevance.isolationforest.IsolationForest
我的笔记本中出现以下错误:
<console>:33: error: object linkedin is not a member of package com
import com.linkedin.relevance.isolationforest.IsolationForest
我已经在google上搜索了好几个小时,想知道这一点,但没法再进一步了。下一步是什么?
顺便说一下,我正在尝试使用这个软件包:https://github.com/linkedin/isolation-forest
谢谢您。
2条答案
按热度按时间bt1cpqcv1#
对于scala:
如果您使用的是spylon内核,那么可以在
%%init_spark
节,如文档所述(第一个用于jar文件,第二个用于包,如下所述):对于python:
在jupyter笔记本的第一个单元格中,在初始化
SparkSession
,请执行以下操作:这将把jar添加到pyspark上下文中。但最好用
--packages
而不是--jars
因为它还将获取所有必要的依赖项,并将所有内容放入内部缓存。例如您只需要选择与pyspark和scala版本匹配的版本(2.3.x和2.4是scala2.11,3.0是scala2.12),正如git repo中所列出的那样。
rt4zxlrg2#
我在纯scala、jupyter lab和almond上做了以下工作,它们使用菊石、无Spark或任何其他重覆盖层:
上面的内容,直接作为语句添加到笔记本中,加载
yourfile.jar
从当前目录。之后,您可以从jar导入。例如,import yourfile._
,如果yourfile
顶级包的名称。我注意到一个警告,在尝试加载之前,应该等待一段时间,直到内核正确启动。如果第一条语句运行太快(例如restart和runall),那么整个语句将挂起。这似乎是一个无关的问题。当然,您可以构造另一个路径(在这里查找可用的api)。此外,在上面的ammonite magic imports链接下,您将找到如何从ivy加载包或如何加载scala脚本的信息。诀窍是使用
interp
对象和LoadJar
你可以从中获得的特质。LoadJar
具有以下api: