【问题标题】:Build sbt for spark with janusgraph and gremlin scala使用 janusgraph 和 gremlin scala 为 spark 构建 sbt
【发布时间】:2018-01-22 14:39:44
【问题描述】:

我试图使用 gremlin scala 使用 janusgraph 为 spark 设置 IntelliJ 构建,但我遇到了错误。

我的 build.sbt 文件是:

version := "1.0"

scalaVersion := "2.11.11"

libraryDependencies += "com.michaelpollmeier" % "gremlin-scala" % "2.3.0"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.2.1"
// https://mvnrepository.com/artifact/org.apache.spark/spark-sql
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.1"
// https://mvnrepository.com/artifact/org.apache.spark/spark-mllib
libraryDependencies += "org.apache.spark" %% "spark-mllib" % "2.2.1"
// https://mvnrepository.com/artifact/org.apache.spark/spark-hive
libraryDependencies += "org.apache.spark" %% "spark-hive" % "2.2.1"
// https://mvnrepository.com/artifact/org.janusgraph/janusgraph-core
libraryDependencies += "org.janusgraph" % "janusgraph-core" % "0.2.0"

libraryDependencies ++= Seq(
  "ch.qos.logback" % "logback-classic" % "1.2.3" % Test,
  "org.scalatest" %% "scalatest" % "3.0.3" % Test
)

resolvers ++= Seq(
  Resolver.mavenLocal,
  "Sonatype OSS" at "https://oss.sonatype.org/content/repositories/public"
) 

但是当我尝试编译使用 gremlin scala 库或 io.Source 库的代码时出现错误。有人可以分享他们的构建文件或告诉我应该修改什么来修复它。 提前致谢。

所以,我试图编译这段代码:

import gremlin.scala._
import org.apache.commons.configuration.BaseConfiguration
import org.janusgraph.core.JanusGraphFactory


class Test1() {
  val conf = new BaseConfiguration()
  conf.setProperty("storage.backend", "inmemory")
  val gr = JanusGraphFactory.open(conf)
  val graph = gr.asScala()
  graph.close

}

object Test{
  def main(args: Array[String]) {
    val t = new Test1()
    println("in Main")
  }
}

我得到的错误是:

错误:(1, 8) 未找到:对象 gremlin 导入 gremlin.scala._

Error:(10, 18) value asScala 不是 org.janusgraph.core.JanusGraph 的成员 val graph = gr.asScala()

【问题讨论】:

  • 您能否至少提供您遇到的错误的文本?
  • 我添加了错误文本。

标签: scala apache-spark gremlin janusgraph


【解决方案1】:

如果您转到Gremlin-Scala GitHub page,您会看到当前版本是“3.3.1.1”并且

通常你只需要添加一个对 "com.michaelpollmeier" %% "gremlin-scala" % "SOME_VERSION" 的依赖和一个你选择的图形数据库到你的 build.sbt (这个自述文件假设 tinkergraph)。最新版本显示在本自述文件顶部的 maven 徽章中。

API 的主要版本发生变化时,这并不奇怪。 图书馆不一样。如果我将您的第一个依赖项更改为

//libraryDependencies += "com.michaelpollmeier" % "gremlin-scala" % "2.3.0" //old!
libraryDependencies += "com.michaelpollmeier" %% "gremlin-scala" % "3.3.1.1"

然后您的示例代码将为我编译。

【讨论】:

  • 谢谢,这有帮助。但是现在,当我编写一些代码来连接到配置单元元存储并将表检索到 spark SQL 中时,我得到一个“java.lang.IllegalAccessError:试图访问方法 com.google.common.base.Stopwatch.( )V 来自类 org.apache.hadoop.mapred.FileInputFormat" 错误。什么可能是错的?添加番石榴依赖不起作用。
  • @J.Doe,我敢打赌你使用旧的 Hadoop 二进制文件和新的 Guava 二进制文件。如您所见Hadoop don't use Guava's Stopwatch anymore for quite some time。看起来您正在遵循一些多年未更新的相当古老的手册。但是当你引入一些新的依赖时,它可能会导致“升级”很多其他的传递依赖。我不确定您是否可以轻松地将番石榴回滚。我认为更新 Hadoop 可能更容易。附言如果答案有帮助,习惯上将其标记为已接受
  • 我用我正在使用的所有库的最新版本更新了依赖项。现在我收到一个新错误,开头为:线程“main”中的异常 java.lang.RuntimeException:在 org.apache 的 org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:109) 配置对象时出错。 hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75) 在 org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133) 在 org.apache.spark.rdd.HadoopRDD.getInputFormat(HadoopRDD.scala: 185) 在 ....
  • @J.Doe,我已经超出了我的深度。这是一个全新的错误,我不确定原因。您应该先对其进行调查(即使 SO 也有一些类似的问题),如果没有帮助,请创建一个新问题,其中包含有关如何重现该问题的更多详细信息。
猜你喜欢
  • 2015-05-27
  • 2018-01-13
  • 2019-02-24
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 2017-06-02
相关资源
最近更新 更多