如何列出dsx spark环境中的jar和加载到spark JVM中的jar?

时间:2017-09-12 11:26:05

标签: ibm-cloud data-science-experience

我遇到了尝试使用spark包的问题,​​例如:

java.lang.ClassNotFoundException: Failed to find data source: com.mongodb.spark.sql.DefaultSource

我列出了lib目录中的文件:

!find ~/data/libs/

我可以看到我的罐装了:

/gpfs/fs01/user/xxxx/data/libs/
/gpfs/fs01/user/xxxx/data/libs/scala-2.11
/gpfs/fs01/user/xxxx/data/libs/scala-2.11/mongo-spark-connector_2.11-2.0.0.jar
/gpfs/fs01/user/xxxx/data/libs/scala-2.11/mongo-java-driver-3.2.2.jar
/gpfs/fs01/user/xxxx/data/libs/pixiedust.jar
/gpfs/fs01/user/xxxx/data/libs/spark-csv_2.11-1.3.0.jar

然而,错误表明火花无法看到罐子。

如何列出可用于火花的罐子?

2 个答案:

答案 0 :(得分:2)

类路径位于环境变量SPARK_DIST_CLASSPATH中。下列 在Python笔记本中执行的代码片段会产生一些重复和非JAR,但也会产生类路径上的JAR。

area

请注意,类路径取决于所选的Spark版本。

答案 1 :(得分:0)

我创建了一个scala笔记本并运行了以下代码:

def urlses(cl: ClassLoader): Array[java.net.URL] = cl match {
  case null => Array()
  case u: java.net.URLClassLoader => u.getURLs() ++ urlses(cl.getParent)
  case _ => urlses(cl.getParent)
}

val  urls = urlses(getClass.getClassLoader)
println(urls.filterNot(_.toString.contains("ivy")).mkString("\n"))

署名:https://gist.github.com/jessitron/8376139

运行此突出显示加载mongodb驱动程序的jvm的问题:

error: error while loading <root>, Error accessing /gpfs/fs01/user/xxxx/data/libs/scala-2.11/mongo-java-driver-3.2.2.jar
error: scala.reflect.internal.MissingRequirementError: object java.lang.Object in compiler mirror not found.

这让我意识到虽然jar文件存在于正确的位置但没有正确加载到jvm中。