hdfs下载出现Exception in thread "main" java.lang.NullPointerException
来源:互联网 发布:java中static域 编辑:程序博客网 时间:2024/05/18 03:09
一.从hdfs文件系统下载文件到本地文件系统时Java代码。
import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class getfile { public static void main(String[] args) throws Exception{ FileSystem fs=FileSystem.get(new URI("hdfs://192.168.11.12:9000"),new Configuration()); Path src=new Path("/data/wordcount/file1"); Path dst=new Path("D:\\app"); fs.copyToLocalFile(src, dst); fs.copyToLocalFile(false,src, dst,true); } }
二.运行程序错误代码。
Exception in thread "main" java.lang.NullPointerException at java.lang.ProcessBuilder.start(ProcessBuilder.java:459) at org.apache.hadoop.util.Shell.runCommand(Shell.java:149) at org.apache.hadoop.util.Shell.run(Shell.java:134) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:286) at org.apache.hadoop.util.Shell.execCommand(Shell.java:354) at org.apache.hadoop.util.Shell.execCommand(Shell.java:337) at org.apache.hadoop.fs.RawLocalFileSystem.execCommand(RawLocalFileSystem.java:481) at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:473) at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:280) at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:372) at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:479) at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:460) at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:367) at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:208) at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:199) at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:142) at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1211) at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1192) ...... .....而且下载的文件会成为 .crc文件并没有大小。
三.修改方式。
fs.copyToLocalFile(src, dst);改为fs.copyToLocalFile(false,src,dst,true);
fs.copyToLocalFile)方法在源码中的代码如下 public void copyToLocalFile(boolean delSrc, Path src, Path dst, boolean useRawLocalFileSystem) throws IOException { Configuration conf = getConf(); FileSystem local = null; if (useRawLocalFileSystem) { local = getLocal(conf).getRawFileSystem(); } else { local = getLocal(conf); } FileUtil.copy(this, src, local, dst, delSrc, conf); }
四.错误原因.
在使用copyToLocalFile(Path src, Path dst)方法时可能导致 setPermission文件本地文件效验失败.
因此使用copyToLocalFile( boolean delSrc,Path src, Path dst,boolean useRawLocalFileSystem)
boolean delSrc 指是否将原文件删除
Path src 指要下载的文件路径
Path dst 指将文件下载到的路径
boolean useRawLocalFileSystem 是否开启文件效验
五. RawLocalFileSystem文件
hadoop是一个综合文件系统,并不等价于hdfs文件系统。hadoop集成了众多的文件系统, hdfs仅仅是hadoop旗舰级文件系统。Hadoop的这个特点充分体现了hadoop的优良的可扩展性。在hadoop里,hadoop定义了一个抽象的文件系统的概念,类:org.apache.hadoop.fs.FileSystm,这个抽象类用来定义hadoop中的一个文件系统接口,只要某个文件系统实现了这个接口,就可以作为hadoop支持的文件系统。
Hadoop LocalFileSystem是客户端校验的类。在使用LocalFileSystem写文件时,会透明的创建一个.filename.crc的文件。 校验文件大小的字节数由io.bytes.per.checksum属性设置,默认是512bytes,即每512字节就生成一个CRC-32校验和。.filename.crc文件会存 io.bytes.per.checksum的信息。在读取的时候,会根据此文件进行校验。事实上LocalFileSystem是通过继承ChecksumFileSystem实现校验的工作。
Localfilefs.LocalFileSystem支持有客户端校验和本地文件系统。带有校验和的本地系统文件在fs.RawLocalFileSystem中实现。
- hdfs下载出现Exception in thread "main" java.lang.NullPointerException
- hdfs下载文件时出现Exception in thread "main" java.lang.NullPointerException
- Exception in thread "main" java.lang.NullPointerException
- Exception in thread "main" java.lang.NullPointerException
- Exception in thread "main" java.lang.NullPointerException问题
- 20170204Exception in thread "main" java.lang.NullPointerException
- Exception in thread "main" java.lang.NullPointerException at java.lang.ProcessBuilder.start(
- Exception in Thread "HouseKeeper" java.lang.NullPointerException
- Exception in thread "HouseKeeper" java.lang.NullPointerException
- Exception in thread "HouseKeeper" java.lang.NullPointerException
- Exception in thread "HouseKeeper" java.lang.NullPointerException
- Exception in Thread "HouseKeeper" Java.lang.NullPointerException
- eclipse出现Exception in thread "main" java.lang.NoClassDefFoundError
- scala出现异常:Exception in thread "main" java.lang.StackOverflowError
- 请教关于JAVA异常问题Exception in thread "main" java.lang.NullPointerException
- Java报错异常-----Exception in thread "main" java.lang.NullPointerException
- Exception in thread "main" java.lang.NullPointerException java报空指针异常
- JAVA类对象的数组报错Exception in thread "main" java.lang.NullPointerException
- Other CSDN博客积分规则和获取积分方法
- java压缩文件
- listview保存并恢复之前位置的方法
- java从指定路径获取指定文件
- Android Studio 配置JNI和NDK开发环境
- hdfs下载出现Exception in thread "main" java.lang.NullPointerException
- [剑指offer]把二叉树打印成多行
- 一般各类模具开模周期
- windows下基于Eclipse的Hadoop应用开发环境配置
- DedeCMS常用SQL语句收录
- 在Docker下搭建Spark+HDFS集群
- 线程池的原理
- blender手册快捷键和操作技巧七
- HTTP Live Streaming直播(iOS直播)技术分析与实现