千家信息网

hadoop中用copyToLocalFile方法下载报NullPointerException该怎么办

发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,这篇文章将为大家详细讲解有关hadoop中用copyToLocalFile方法下载报NullPointerException该怎么办,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文
千家信息网最后更新 2025年02月08日hadoop中用copyToLocalFile方法下载报NullPointerException该怎么办

这篇文章将为大家详细讲解有关hadoop中用copyToLocalFile方法下载报NullPointerException该怎么办,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

    /**     * 下载文件     */    @Test    public void download() throws Exception {        fs.copyToLocalFile(new Path("hdfs://master:9000/aa/lidunhui.jpg"), new Path("e://wangbadan.txt"));    }

运行该下载测试报空指针异常,如下:

java.lang.NullPointerException    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1010)    at org.apache.hadoop.util.Shell.runCommand(Shell.java:445)    at org.apache.hadoop.util.Shell.run(Shell.java:418)    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)    at org.apache.hadoop.util.Shell.execCommand(Shell.java:739)    at org.apache.hadoop.util.Shell.execCommand(Shell.java:722)    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:633)    at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:467)    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:456)    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:424)    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:906)    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:887)    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:784)    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:365)    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:338)    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:289)    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1968)    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1937)    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1913)    at com.jasun.hadoop.hdfs.HdfsUtil.download(HdfsUtil.java:62)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke(Method.java:606)    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

解决办法,如下:

将fs.copyToLocalFile( hdfsPath,localPath);改为fs.copyToLocalFile( false,hdfsPath,localPath,true)

    /**     * 下载文件     */    @Test    public void download() throws Exception {        fs.copyToLocalFile(false, new Path("hdfs://master:9000/aa/lidunhui.jpg"), new Path("e://wangbadan.txt"), true);    }

关于hadoop中用copyToLocalFile方法下载报NullPointerException该怎么办就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0