I found this example如何写入本地文件系统,但它抛出了这个异常:
Exception in thread "main" java.io.IOException: (null) entry in command string: null chmod 0644 C:\temp\test.seq
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:770)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:866)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:849)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:733)
at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:225)
at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:209)
at org.apache.hadoop.fs.RawLocalFileSystem.createOutputStreamWithMode(RawLocalFileSystem.java:307)
at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:296)
at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:328)
at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSOutputSummer.<init>(ChecksumFileSystem.java:398)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:461)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:440)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:911)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:892)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:789)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:778)
at org.apache.hadoop.io.SequenceFile$Writer.<init>(SequenceFile.java:1168)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
在Windows 10上运行此框。我甚至尝试使用msys git bash shell,这可能会帮助JVM模拟chmod操作。没有改变什么。有关如何在Windows上执行此操作的任何建议吗?
答案 0 :(得分:4)
我也遇到了这个错误,经过以下步骤后解决了。 (注意:我使用的是Spark 2.0.2和Hadoop 2.7)
答案 1 :(得分:3)
在Windows上仅使用jar运行Hadoop程序需要几步,而不仅仅是引用jar。
感谢赫尔辛基大学Professor Lu为他的学生发布Hadoop on Windows guide。
以下是使用Windows 10和Hadoop 2.7.3时必须采取的步骤的简要说明:
将Hadoop二进制文件下载并解压缩到C:\hadoop-2.7.3
之类的地方。
从https://github.com/srccodes/hadoop-common-2.2.0-bin/archive/master.zip下载补丁文件并将其解压缩到您的%HADOOP_HOME%\bin
目录。
设置HADOOP_HOME
环境变量。例如,C:\hadoop-2.7.3
。
下载Hadoop源代码,将hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio\NativeIO.java
复制到您的项目,然后从
return access0(path, desiredAccess.accessRight());
到
return true;
答案 2 :(得分:0)
其中一个解决方案如下。
在项目结构(Intelij)中,在SDK下确保没有引用其他版本的Hadoop。在我的情况下 - 我之前运行Spark并且它引用了Hadoop JAR,这导致了访问问题。一旦我删除它们并运行MR工作就运行良好。