【问题标题】:Why does Spark fail with "value rdf is not a member of org.apache.spark.sql.SparkSession"?为什么 Spark 失败并显示“值 rdf 不是 org.apache.spark.sql.SparkSession 的成员”?
【发布时间】:2018-04-01 07:35:23
【问题描述】:

我正在尝试使用 SANSA-RDF 将海龟 RDF 文件读入 Spark 并创建一个图表。执行以下代码时出现错误。我错过了什么?

    import org.apache.jena.query.QueryFactory
    import org.apache.jena.riot.Lang
    import org.apache.spark.sql.SparkSession
    import net.sansa_stack.rdf.spark.io.rdf._
    import net.sansa_stack.rdf.spark.io._
    import scala.io.Source

    object SparkExecutor {
      private var ss:SparkSession = null

      def ConfigureSpark(): Unit ={

        ss = SparkSession.builder
          .master("local[*]")
          .config("spark.driver.cores", 1)
          .appName("LAM")
          .getOrCreate()

      }

      def createGraph(): Unit ={
        val filename = "xyz.ttl"
        print("Loading graph from file"+ filename)
        val lang = Lang.TTL
        val triples = ss.rdf(lang)(filename)
        val graph = LoadGraph(triples)    
      }
    }

我正在使用主函数调用 SparkExecutor

    object main {
      def main(args: Array[String]): Unit = {
        SparkExecutor.ConfigureSpark()
        val RDFGraph = SparkExecutor.createGraph()
      }
    }

这会导致以下错误

    Error: value rdf is not a member of org.apache.spark.sql.SparkSession
val triples = ss.rdf(lang)

【问题讨论】:

  • 如果没有充分的理由,您不应使用 SNAPSHOT 版本 - 已移动包,如下面的答案中所述。
  • 我猜你必须删除 import org.apache.spark.sql.SparkSession

标签: scala apache-spark rdf turtle-rdf sansa


【解决方案1】:

如果您在

中看到SANSA-RDF源代码,那么存在隐式转换
sansa-rdf-spark/src/main/scala/net/sansa_stack/rdf/spark/io/package.scala:159

rdf(lang)不是spark session的方法,而是隐式类RDFReader的方法,所以需要导入隐式定义可用的包。请尝试添加

导入 net.sansa_stack.rdf.spark.io._

让我们知道结果。

【讨论】:

  • 没错,一个 Scala 包对象被移动了——很明显,这是在 SNAPSHOT 版本中进行的更改,文档将在下一个版本中更新。
  • @shuvomiah,谢谢你的建议。我已按照您的建议添加了导入。我仍然遇到同样的错误。我正在与 Intellij 合作。似乎 Intellij 没有识别进口(灰色)。我已经更新了问题中的代码。
  • 其实我从github上拉了最新的代码。您能否从 RDFReader 中搜索 rdf 方法,并查看该类在哪个包中声明?这绝对不是 Intellij 问题。让我们知道。
  • @shuvomiah,感谢您的回复。 RDFReader 的 rdf 方法在您提到的包中定义 net.sansa_stack.rdf.spark.io
  • 我现在从 GitHub 拉取代码并构建了一个本地 jar。我将它包含在库中,现在我的代码工作正常。我确信这是解决问题的不好方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多