eclipse中连接HDFS,上传本地文件夹

连接HDFS的步骤
//    准备连接HDFS的操作支持类
Configuration conf = new Configuration();
//    所要写入的路径,path要用于创建文件系统和创建连接hadoop的create路径
Path path = new Path("hdfs://192.168.43.134:9000/input");
//    创建文件系统对象
FileSystem fs = path.getFileSystem(conf);
//    通过文件系统来创建一个IO流,输出到hadoop中
FSDataOutputStream os = fs.create(path);


将本地文件夹中所有“.txt“文件上传到hadoop中
package com.szk.practice;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

/**
* 将自己系统中的某一个文件夹下的所有.txt文件上传到hadoop中
* @author SZK
*
*/



public class practice_01 {
    //准备连接HDFS的支持操作类
    private static Configuration conf = new Configuration();
    
    public static void main(String[] args) throws Exception {
        //获取本机上的文件夹
        File f = new File("C:/Users/SZK/Desktop/大三下学习文件/Hadoop/szk");
        //拷贝文件夹中所有的以“.txt”结尾的文件
        copyFileDir(f);    
    }
    
    /**
     * 输入一个文件夹的路径,将此文件夹下所有的.txt文件结尾的文件上传到hadoop中
     * @param f        文件夹路径
     * @throws Exception
     */
    public static void copyFileDir(File f) throws Exception{
        if(f.isDirectory()){
            File[] files = f.listFiles();
            for(File file:files){
                copyFileDir(file);
            }
        }
        else{
            String filename = f.getName();
            if(filename.tpLowerCase().endsWith(".txt")){              //    判断文件是否为.txt结尾
                //所要写入的文件路径
                Path path = new Path("hdfs://192.168.43.134:9000/szk/"+filename);
                FileSystem fs = path.getFileSystem(conf);            
                //通过文件系统来获取一个IO流,输出到hadoop中
                FSDataOutputStream os = fs.create(path);
                
                //读取本机的.txt文件内容
                FileReader fileReader = new FileReader(f.getPath());        //    读取txt中的内容
                BufferedReader  bReader = new BufferedReader(fileReader);
                String line = bReader.readLine();
                while(line!= null){
                    //将内容复制到已经创建的hadoop中的文件中
                    os.writeUTF(line+"\r\n");            //    \r:回车     \n:换行
                    line = bReader.readLine();
                }
                
                bReader.close();
                os.close();
            }
        }    
    }
}

你可能感兴趣的:(Linux,hadoop,HDFS)