【发布时间】: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