无法在本地文件系统上创建hadoop序列文件

aelbi1ox  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(364)

我发现了这个如何写入本地文件系统的示例,但它引发了以下异常:

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)

在Windows10上运行这个。我甚至尝试使用msysgitbashshell,认为这可能有助于jvm模拟chmod操作。什么都没变。对如何在windows上执行此操作有什么建议吗?

du7egjpx

du7egjpx1#

解决方案之一如下。
在项目结构(intelij)中,在sdk的下,确保没有其他版本的hadoop被引用。在我的例子中——我之前运行的是spark,它引用的是hadoop jar,这导致了访问问题。一旦我把它们移走,开始了mr的工作,一切都很好。

fykwrbwg

fykwrbwg2#

我也面临着这个错误,在遵循这些步骤之后,问题得到了解决(注意:我使用的是spark 2.0.2和hadoop 2.7)
验证是否获得“java.io.ioexception:在hadoop二进制文件中找不到可执行文件null\bin\winutils.exe”。您可以通过运行“sparkshell”命令来检查它。
我犯了上述错误。发生这种情况是因为我没有在environment var中添加“hadoop\u home”。在添加了“hadoop\u home”之后,在我的例子中与“spark\u home”相同,问题得到了解决。

4sup72z8

4sup72z83#

在windows上只使用jar运行hadoop程序需要几个步骤,而不仅仅是引用jar。
赫尔辛基大学的卢教授为他的学生发布了一个hadoop-on-windows指南。
下面是我在使用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 并修改第609行 return access0(path, desiredAccess.accessRight());return true;

相关问题