【问题标题】:WinUtils & Spark 3.1.1 FailuresWinUtils & Spark 3.1.1 失败
【发布时间】:2021-09-08 04:02:26
【问题描述】:

我正在尝试创建一个带有 Conda 环境和 PySpark 的 Windows 10 开发者虚拟机,但发现让 Spark 和 winutils 正常工作的问题一直存在。

环境:

  • Windows 10 19042(完全修补)
  • 迷你康达
  • PySaprk 3.1.1
  • Java 11.0.11

我已经创建了 C:\Hadoop\bin 并从这里下载了 winutils https://github.com/cdarlint/winutils/tree/master/hadoop-3.2.1/bin(我也尝试过 3.2.0)。

HADOOP_HOME 是 C:\Hadoop 并且 Path 中包含 %HADOOP_HOME\bin。 JAVA_HOME 是正确的。

此代码有效:

location = 'C:/myfiles/file.csv'
df = spark.read.format("csv").options(header=True).load(location)

此代码失败:

location = 'C:/myfiles/'
df = spark.read.format("csv").options(header=True).load(location)

错误信息:

An error occurred while calling o35.load.
: java.lang.UnsatisfiedLinkError: 'boolean org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(java.lang.String, int)'
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:645)
    at org.apache.hadoop.fs.FileUtil.canRead(FileUtil.java:1230)
    at org.apache.hadoop.fs.FileUtil.list(FileUtil.java:1435)
    at org.apache.hadoop.fs.RawLocalFileSystem.listStatus(RawLocalFileSystem.java:493)

Winutils 正在被使用,因为如果我删除上面的第一个示例,它也会以预期的方式中断。

winutils 似乎与 Spark 3.1.1 不兼容,特别是文件文件夹?我很难相信。

奇怪的是,虽然我有另一台装有 pySpark 3.1.1 的机器和这个版本的 winutils 并且它可以工作!相同的 Java 版本也是如此。我迷路了——我什至已经将工作机器上的 winutils 文件复制到了这台机器上,但它仍然无法正常工作。

谁能指导我这个错误的含义,至少可以帮助我了解问题可能出在哪里?

【问题讨论】:

  • “奇怪的是,虽然我有另一台装有 pySpark 3.1.1 的机器和这个版本的 winutils 并且它可以工作!”似乎过于指向环境差异而不是 winutils 不兼容。

标签: apache-spark hadoop pyspark


【解决方案1】:

就我而言,我可以通过将hadoop.dll 从上述问题中提供的相同链接(here)添加到与 winutils 相同的位置来解决问题。请检查是否有版本不匹配。

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多