【问题标题】:error: object xml is not a member of package com.databricks.spark错误:对象 xml 不是包 com.databricks.spark 的成员
【发布时间】:2018-03-04 07:30:13
【问题描述】:

我正在尝试使用 SBT 读取 XML 文件,但我在编译时遇到了问题。

build.sbt

name:= "First Spark"
version:= "1.0"
organization := "in.goai"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.0.0"
libraryDependencies += "com.databricks" % "spark-avro_2.10" % "2.0.1"
libraryDependencies += "org.scala-lang.modules" %% "scala-xml" % "1.0.2"
resolvers += Resolver.mavenLocal

.scala 文件

package in.goai.spark

import scala.xml._
import com.databricks.spark.xml
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkContext, SparkConf}

object SparkMeApp {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("First Spark")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)
    val fileName = args(0)
    val df = sqlContext.read.format("com.databricks.spark.xml").option("rowTag", "book").load("fileName")
    val selectedData = df.select("title", "price")
    val d = selectedData.show
    println(s"$d")

  }
}

当我通过给出“sbt package”来编译它时,它显示以下错误

[error] /home/hadoop/dev/first/src/main/scala/SparkMeApp.scala:4: object xml is not a member of package com.databricks.spark
[error] import com.databricks.spark.xml
[error]        ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 9 s, completed Sep 22, 2017 4:11:19 PM

我是否需要添加任何其他与 xml 相关的 jar 文件?请提出建议并提供任何链接,其中提供有关不同文件格式的 jar 文件的信息

【问题讨论】:

标签: scala apache-spark sbt apache-spark-sql scala-xml


【解决方案1】:

因为您使用的是 Scala 2.11 和 Spark 2.0,所以在 build.sbt 中,将您的依赖项更改为以下内容:

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.0.0"
libraryDependencies += "com.databricks" %% "spark-avro" % "3.2.0"
libraryDependencies += "com.databricks" %% "spark-xml" % "0.4.1"
libraryDependencies += "org.scala-lang.modules" %% "scala-xml" % "1.0.6"
  1. spark-avro 版本更改为3.2.0:https://github.com/databricks/spark-avro#requirements
  2. 添加"com.databricks" %% "spark-xml" % "0.4.1":https://github.com/databricks/spark-xml#scala-211
  3. scala-xml 版本更改为1.0.6,Scala 2.11 的当前版本:http://mvnrepository.com/artifact/org.scala-lang.modules/scala-xml_2.11

在您的代码中,删除以下导入语句:

import com.databricks.spark.xml

请注意,您的代码实际上并未使用 spark-avroscala-xml 库。如果您不打算使用它们,请从您的 build.sbt(以及代码中的 import scala.xml._ 语句)中删除这些依赖项。

【讨论】:

  • 我现在可以编译 :) 但是当我执行它时,它会显示以下错误任何想法?线程“主”java.lang.NoSuchMethodError 中的异常:org.apache.spark.sql.types.DecimalType$.Unlimited()Lorg/apache/spark/sql/types/DecimalType;
  • @ashoksrinivas:在您的sbt 控制台中,运行reloadupdate
  • 对不起 chunjef 我是新来的 sbt 和学习自己。我不知道如何控制台,重新加载,运行 sbt...我请求你指导我谢谢
  • 我给“ sbt package ”,后面跟着这段代码运行“ spark-submit --master "local[*]" --class in.goai.spark.SparkMeApp /home/hadoop/devo/ first/target/scala-2.11/first-spark_2.11-1.0.jar scala.xml "
  • @ashoksrinivas:尝试运行sbt clean reload update
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 2021-08-29
相关资源
最近更新 更多