Spark 2.4.3 - Scala 2.12.3 - 对象 apache 不是包 org 的成员

问题描述 投票:0回答:4

我最近更新到

Spark 2.4.3
Scala 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.jar
spark-mllib_2.12_2.4.3.jar
spark-sql_2.12_2.4.3.jar
链接到我的构建路径(Eclipse 显示没有错误)。

我用自制软件更新了 Spark、scala 和 sbt。我不知道这是否会扰乱 sbt 找到罐子的方式?

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

[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

我不知道该尝试什么。

分析.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()
   }  

}
scala apache-spark sbt
4个回答
1
投票

在你的 build.sbt 中指定 scala 的完整版本(

2.12.8
而不是
2.12
)。它应该修复它(在我的情况下确实如此)。

scalaVersion := "2.12.8"

我不知道为什么 sbt 会发生这种情况。


0
投票

肯定是Spark和Scala版本的兼容性问题。请参阅此链接

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


0
投票

build.sbt不在项目文件夹(/Users/me/myproject/)中,而是在src文件夹(/Users/me/myproject/src)中,所以当我进行sbt打包时,它从未找到我的build.sbt ,因此存在依赖性问题。


0
投票

如果您的问题仍然存在,您可以尝试使用sparkConf对象触发,如下所示,这将对您的场景有所帮助。

val SparkConf = new SparkConf().setAppName("MyApp").setMaster("local[*]")

val Spark = SparkSession.builder.config(sparkConf).getOrCreate()

© www.soinside.com 2019 - 2024. All rights reserved.