更新时间:2023年02月03日12时01分 来源:传智教育 浏览次数:
在HDFS_CRUD.java文件中添加一个testDownloadFileToLocal()方法,来实现从HDFS中下载文件到本地系统的功能,具体代码如下:
//从HDFS中复制文件到本地文件系统 @Test public void testDownloadFileToLocal() throws IllegalArgumentException, IOException{ //下载文件 fs.copyToLocalFile(new Path("/testFile"), new Path("D:/")); fs.close(); }
从上述代码可以看出,可以通过FileSystem对象的copyToLocalFile()方法从HDFS上下载文件到本地。copyToLocalFile()方法接收两个参数,第一个参数是HDFS上的文件路径,第二个参数是下载到本地的目标路径。
注意:在Windows平台开发HDFS项目时,若不设置Hadoop开发环境,则会报以下错误:
java.io.IOException: (null) entry in command string: null chmod 0644 D:\testFile
解决方式:
(1)根据教材提示,安装配置Windows平台Hadoop(注意,配置后必须重启电脑),运行没有问题。
(2)直接使用下载的Linux平台下的Hadoop压缩包进行解压,然后在解压包bin目录下额外添加Windows相关依赖文件(winutils.exe、winutils.pdb、hadoop.dll),然后进行Hadoop环境变量配置(注意,配置后必须重启电脑),运行同样没有问题。
(3)使用FileSystem自带的方法即使不配置Windows平台Hadoop也可以正常运行(这种方法下载后就是没有附带一个类似.testFile.crc的校验文件):
fs.copyToLocalFile(false,new Path("/testFile"), new Path("D:/"),true);