【问题标题】:Apache Spark runtime exception "Unable to load native-hadoop library for your platform" despite not using or referenceing Hadoop at all尽管根本没有使用或引用 Hadoop,但 Apache Spark 运行时异常“无法为您的平台加载本机 hadoop 库”
【发布时间】:2016-04-30 09:53:46
【问题描述】:

我正在尝试在 IntelliJ 15 中使用 Scala 运行这个简单的 Spark 程序。 代码运行良好,直到它尝试执行与创建新 SparkConf 对象相关的行:

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkContext, SparkConf}

object  Driver {
  //val sparkMaster:String = "spark://local:7077"
  val sparkMaster:String = "local"
  val csvPath:String = "/Users/mbrown/src/data/csv/titanic/test.csv"
  def main(args:Array[String]):Unit={
    println("Running within Driver.main().....")
    val logFile:String = "log.txt"
    val conf = new SparkConf().setAppName("Testing DFrame joins...").setMaster(sparkMaster)
    val sc = new SparkContext(conf)
    val csvFileRDD = sc.textFile(csvPath).cache()
    val numAs:RDD[String] = csvFileRDD.filter(x => x.contains("a"))
    val numBs:RDD[String] = csvFileRDD.filter(x => x.contains("b"))
    println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
    System.exit(0)
  }
}

这是我的 build.gradle 文件: 组“排列” 版本“1.0-SNAPSHOT”

apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'scala'

//sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.3.11'
    compile 'com.google.guava:guava:19.0'
    compile 'org.apache.spark:spark-core_2.10:1.4.1'
    compile 'org.apache.spark:spark-assembly_2.10:1.1.0'
    compile 'org.apache.spark:spark-mllib_2.10:1.4.0'
    compile 'org.apache.spark:spark-sql_2.10:1.4.1'
    compile 'org.apache.hadoop:hadoop-common:2.7.1'
    //testCompile group: 'junit', name: 'junit', version: '4.11'
}

奇怪的是......当我使用 Spark 的 Java API 编写具有类似集合的 Spark 代码时......我没有遇到这个问题。

这是我的输出和错误:

Running within Driver.main().....
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
16/01/23 17:06:30 INFO SparkContext: Running Spark version 1.3.0
16/01/23 17:06:31 WARN NativeCodeLoader: Unable to load native-hadoop library        for your platform... using builtin-java classes where applicable
Exception in thread "main" java.lang.NoClassDefFoundError:    org/apache/hadoop/conf/Configuration$DeprecationDelta
    at    org.apache.hadoop.mapreduce.util.ConfigUtil.addDeprecatedKeys(ConfigUtil.java:54)

有什么想法吗?

【问题讨论】:

  • 您的环境中似乎存在一些问题。显示的依赖项是spark-core_2.10:1.4.1,但控制台显示INFO SparkContext: Running Spark version 1.3.0。似乎您的集群和代码正在使用 2 个不同版本的 Spark 编译和执行
  • 我认为你是对的。我删除了项目并重新创建了它。现在可以了。我不知道发生了什么。之前配置中的设置完全相同。感谢您的帮助!

标签: java scala hadoop intellij-idea apache-spark


【解决方案1】:

所以……显然正如用户“Sumit”所建议的那样……我的环境有些不对劲……

我整天都在删除和重新创建项目,但没有运气,然后突然意识到,可能是一些在我笔记本电脑上的其他 gradle 项目中徘徊的依赖项不应该来自于其他 gradle 项目。

我删除了 ~/.gradle 目录,然后再次删除并重新创建了我的项目... 这次成功了。

谢谢苏米特。我很感激!!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 2013-11-25
    • 2015-08-02
    • 2013-09-10
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多