运行copyToLocalFile文件,出现空指针错误。

来源:3-26 HDFS API编程之列出文件夹下的所有内容

酱汁怪兽

2021-07-02

您好:
(1)下载了winutils.exe文件,放置在D:\winutils\bin下面。
(2)添加了:System.setProperty(“hadoop.home.dir”, “d:\winutils\”);
但是还是报空指针错误
前面的配置,应该是没有问题的。麻烦您了~

package com.imooc.bigdata.hadoop.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progress;
import org.apache.hadoop.util.Progressable;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URI;

/**
 * 使用Java API操作HDFS文件系统
 *
 * 因为是放在test下面,所以最好使用单元测试的方式
 * 在pom中引入的jUnit单元测试的方式
 * 单元测试有两个方法:(1)在单元测试之前进行;(2)在单元测试之后进行
 *
 * 关键点:
 * 1)创建Configuration
 * 2)获取FileSystem
 * 3)剩下的是HDFS API的操作
 */

public class HDFSApp {


    public static final String HDFS_PATH = "hdfs://hadoop000:8020";
    //Configuration、FileSystem是每一个方法使用之前必须构建的
    Configuration configuration = null;
    FileSystem fileSystem = null;

    @Before
    public void setup() throws Exception{
        System.out.println("-----setup-----");
        configuration = new Configuration();
        configuration.set("dfs.replication", "1");
        /*
         *构造一个访问指定HDFS系统的客户端对象
         * 第一个参数:HDFS的URI
         * 第二个参数:客户端指定的配置参数
         * 第三个参数:客户的用户名
         */
        fileSystem = FileSystem.get(new URI("hdfs://hadoop000:8020"), configuration, "hadoop");
    }

    /*
     * 拷贝HDFS文件系统 至 本地主机文件
     */
    @Test
    public void copyToLocalFile() throws Exception{
        System.setProperty("hadoop.home.dir", "d:\\winutils\\");
        Path src = new Path("/hdfsApi/test/hello.txt");
        Path dst = new Path("G:/BaiduNetdiskDownload");
        fileSystem.copyToLocalFile(src, dst);
    }


    @After
    public void tearDown(){
        System.out.println("-----tearDown-----");

        //置空
        configuration = null;
        fileSystem = null;
    }
}

图片描述
图片描述

写回答

1回答

Michael_PK

2021-07-04

遇到问题建议可以先到问答区搜索下,基本都能找到的。参考https://coding.imooc.com/learn/questiondetail/vQW1lPEp0jG6yE9A.html

0
0

Hadoop 系统入门+核心精讲

从Hadoop核心技术入手,掌握数据处理中ETL应用,轻松进军大数据

2397 学习 · 902 问题

查看课程