【问题标题】:Spark: unable to load native-hadoop library for platformSpark:无法为平台加载本机 hadoop 库
【发布时间】:2021-12-11 02:15:47
【问题描述】:

我正在尝试从 Spark 开始。我的库中有 Hadoop (3.3.1) 和 Spark (3.2.2)。我已将 SPARK_HOME、PATH、HADOOP_HOME 和 LD_LIBRARY_PATH 设置为它们各自的路径。我也在运行 JDK 17(echo 和 -version 在终端中工作正常)。

但是,我仍然收到以下错误:

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
21/10/25 17:17:07 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x1f508f09) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x1f508f09
  at org.apache.spark.storage.StorageUtils$.<init>(StorageUtils.scala:213)
  at org.apache.spark.storage.StorageUtils$.<clinit>(StorageUtils.scala)
  at org.apache.spark.storage.BlockManagerMasterEndpoint.<init>(BlockManagerMasterEndpoint.scala:110)
  at org.apache.spark.SparkEnv$.$anonfun$create$9(SparkEnv.scala:348)
  at org.apache.spark.SparkEnv$.registerOrLookupEndpoint$1(SparkEnv.scala:287)
  at org.apache.spark.SparkEnv$.create(SparkEnv.scala:336)
  at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:191)
  at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:277)
  at org.apache.spark.SparkContext.<init>(SparkContext.scala:460)
  at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2690)
  at org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate$2(SparkSession.scala:949)
  at scala.Option.getOrElse(Option.scala:189)
  at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:943)
  at org.apache.spark.repl.Main$.createSparkSession(Main.scala:106)
  ... 55 elided
<console>:14: error: not found: value spark
       import spark.implicits._
              ^
<console>:14: error: not found: value spark
       import spark.sql
              ^
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.2.0
      /_/
         
Using Scala version 2.12.15 (OpenJDK 64-Bit Server VM, Java 17.0.1)
Type in expressions to have them evaluated.
Type :help for more information.

任何想法如何解决这个问题?

【问题讨论】:

  • unable to load native-hadoop library for platform 只是一个警告,而不是错误,通常不表示任何问题。实际的错误是它下面的东西。 Spark 会在这之后死掉还是可以使用控制台?
  • 嗯,好吧。我认为这与我收到 Spark 错误的原因有关(未找到:值 Spark)。我仍然可以使用控制台,但无论我尝试什么,它总是依赖于 not found: value Spark。例如。从 Spark bin 文件夹中: val strings = spark.read.text("../README.md")

标签: java apache-spark hadoop


【解决方案1】:

打开你的终端并输入这个命令 --> gedit .bashrc

确保在lib之后添加native如下图

export HADOOP_OPTS = "-Djava.library.path=$HADOOP_HOME/lib/native"

保存文件并在终端source ~/.bashrc

中输入此命令

试试这个可能对你有帮助。

【讨论】:

    【解决方案2】:

    不支持 Java 17 - Spark 在 Java 8/11 上运行(来源:https://spark.apache.org/docs/latest/)。

    所以安装 Java 11 并将 Spark 指向它。

    警告unable to load native-hadoop library for platform 很常见,并不意味着有任何问题。

    【讨论】:

    • 感谢它终于起作用了
    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 2013-11-25
    • 2013-09-10
    • 2016-04-30
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多