java上傳本地文件至hdfs(簡單寫一下)


1.創建一個maven項目,導入jar包

<dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.6.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.6.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.6.5</version>
        </dependency>
        <dependency>
            <groupId>jdk.tools</groupId>
            <artifactId>jdk.tools</artifactId>
            <version>1.8</version>
            <scope>system</scope>
            <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
        </dependency>

2.上傳文件代碼

import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class HdfsText01 {
    public static void main(String[] args) throws Exception {
        //1 創建連接
        Configuration conf = new Configuration();
        //2 連接端口
        conf.set("fs.defaultFS", "hdfs://hadoop01:9000");
        //3 獲取連接對象
        FileSystem fs = FileSystem.get(conf);
        //本地文件上傳到 hdfs
        fs.copyFromLocalFile(new Path("E://haha.txt"), new Path("/output1"));
        fs.close();
        
    }
}

3.使用流上傳文件

//流上傳文件
        FileInputStream in=new FileInputStream("E://haha.txt");//讀取本地文件
        FSDataOutputStream out = fs.create(new Path("/output2"));//在hdfs上創建路徑
        byte[] b = new byte[1024*1024];
        int read = 0;
        while((read = in.read(b)) > 0){
            out.write(b, 0, read);
        }

 

4.將hdfs文件下載到本地

//hdfs文件復制到本地(流)
FSDataInputStream in = fs.open(new Path("/output"));
FileOutputStream out = new FileOutputStream("E:/mm.txt");
IOUtils.copyBytes(in, out, conf);

注:在最后要關閉流哦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM