【问题标题】:Spark 2.4.3 - Scala 2.12.3 - object apache is not a member of package orgSpark 2.4.3 - Scala 2.12.3 - 对象 apache 不是包 org 的成员
【发布时间】:2019-08-20 16:39:32
【问题描述】:

我最近更新到 Spark 2.4.3Scala 2.12.3(来自 Spark 2.0.0),但在编译非常简单的代码(加载和显示)时遇到问题。

我使用 sbt 1.2.8 的 build.sbt 是:

name := "my-program"

version := "1.0"

scalaVersion := "2.12"

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.3"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.3"
libraryDependencies += "org.apache.spark" %% "spark-mllib" % "2.4.3"

我正在使用 Scala for Eclipse 进行开发,并且 jars spark-core_2.12_2.4.3.jarspark-mllib_2.12_2.4.3.jarspark-sql_2.12_2.4.3.jar 链接到我的构建路径(Eclipse 没有显示错误)。

我用自制软件更新了 Spark、scala 和 sbt。我不知道这是否会影响 sbt 查找 jars 的方式?

我尝试了很多次 sbt clean package 和 sbt package,但我得到的只是:

[error] /Users/me/myproject/src/main/scala/Analysis.scala:5:12: object apache is not a member of package org
[error] import org.apache.spark.sql.SparkSession

我不知道该尝试什么。

Analysis.scala:

package main.scala

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._


object Analysis {


   def main(args: Array[String]) {

     // Start Spark session
      val spark = SparkSession.builder().getOrCreate()
      import spark.implicits._
      // Reduce verbosity of output when running in console
      spark.sparkContext.setLogLevel("WARN")

      val df =   spark.read   
      // Format read
      .format("com.databricks.spark.csv")
      .option("header", "true")
      .option("parserLib", "UNIVOCITY")
      .option("inferSchema", "true")
      .json("data/transaction.txt")

      df.printSchema()
   }  

}

【问题讨论】:

  • 你能在这里添加Analysis.scala吗?
  • 当然。查看修改。
  • 您是在创建完整的 jar 文件然后执行它吗?如果是的话,如果你有依赖包在JAR文件中,你能看看吗?
  • 我从来没有在 Eclipse 上用 Scala 编写过代码,但是……你确定 package main.scala 吗?这很奇怪。
  • 是的,我确定。这些相当于子文件夹。 src/main/scala 如果你愿意的话。

标签: scala apache-spark sbt


【解决方案1】:

一定是Spark和Scala版本的兼容性问题。见this link

尝试 Scala 版本 2.12.8 + Spark 版本 2.4.0。它对我有用。

【讨论】:

  • 我完全不知所措。我安装了 Spark 2.4.0 和 scala 2.12.8 - 我更新了 build.sbt 但我仍然遇到同样的错误!
  • 我承认我使用 IntelijIdea,而不是像你这样的 Eclipse。这也可能有所作为。
  • 我有另一个带有 Spark 项目的 Eclipse 工作区,即使有更新也能正常工作。我不知道为什么这个新的工作区/项目没有!同样的 build.sbt 一个得到错误,另一个没有。一直在为这该死的一天工作! 尖叫声!
  • OMFG... build.sbt 在错误的文件夹中... project/src/build.sbt 而不是 project/build.sbt 所以我从来没有调用我的依赖项...请杀死我现在...
  • 现在可以使用了吗?顺便说一下,我在我的电脑上试过,我只需要在创建SparkSession时添加.master("local")
【解决方案2】:

在您的 build.sbt 中指定完整版本的 scala(2.12.8 而不是 2.12)。它应该修复它(在我的情况下它确实如此)。

scalaVersion := "2.12.8"

我不确定为什么 sbt 会发生这种情况。

【讨论】:

    【解决方案3】:

    build.sbt 不在项目文件夹(/Users/me/myproject/)中,而是在 src 文件夹中(/Users/me/myproject/src),所以当我做 sbt 包时,它从来没有找到我的构建.sbt,因此存在依赖问题。

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 2016-02-09
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多