spark在试图保存csv文件时抛出错误

jgovgodb  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(354)

社区巫师,
我真的很沮丧。说到spark,hadoop等人,似乎没有什么是直截了当的。
在过去的几个小时里,我试图找到解决以下问题的方法:

ERROR Executor: Exception in task 0.0 in stage 13.0 (TID 823)
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createFileWithMode0(Ljava/lang/String;JJJI)Ljava/io/FileDescriptor;

版本:
操作系统:windows 10
spark版本:2.4.6
scala版本:2.11.12
hadoop版本:2.7.1
java版本:1.8.0_(64位)
变量:
spark\u主页:c:\spark
hadoop\u主页:c:\hadoop\hadoop-2.7.1
scala\u主页:c:\program files(x86)\scala
jre\u主页:c:\program files\java\jre1.8.0\u 202
java\u主页:c:\program files\java\jdk1.8.0\u 202
路径:
%spark\u主页%\bin
%hadoop\u主页%\bin
%scala\u主页%\bin
%jre\ U主页%\bin
%java\u主页%\bin
引发错误的命令是:

df.coalesce(1).write.format("csv").save("result")

文件夹(结果)似乎已创建,但它是空的。
我完全不知道如何解决这个问题。
任何帮助都将受到热烈欢迎。

z9zf31ra

z9zf31ra1#

您似乎没有安装适用于windows的hadoop二进制文件 HADOOP_HOME 目录。也可能是它们的依赖项(如visualc++运行时)丢失了。
您可能还需要直接加载共享库,这取决于您启动spark应用程序的方式。

System.load(System.getenv("HADOOP_HOME") + "/lib/hadoop.ddl");
iaqfqrcu

iaqfqrcu2#

我相信你的 HADOOP_HOME=C:\Hadoop\hadoop-2.7.1 指向hadoop二进制文件/库,您应该需要一个名为 WINUTILS.EXE 在Windows里工作。
您可以从git下载hadoop版本的winutils,并将hadoop\u homeMap到winutils的根目录。https://github.com/steveloughran/winutils
资料来源:
来自hadoop的合流:hadoop需要windows上的本机库才能正常工作,这包括访问file://filesystem,其中hadoop使用一些windows API实现类似posix的文件访问权限
https://cwiki.apache.org/confluence/display/hadoop2/windowsproblems

相关问题