java實現HDFS上文件的判斷,添加,查詢


(一)在eclipse中新建一個java項目,就普通建一個java項目就可以,然后添加hadoop的依賴包

 

 

(二)打開后選擇add Exernal jars

添加hadoop的包,包的位置如下(/usr/local/hadoop/是我的hadoop路徑)

/usr/local/hadoop/share/hadoop/common下所有jar包

/usr/local/hadoop/share/hadoop/common/lib下所有jar包

/usr/local/hadoop/share/hadoop/hdfs下所有jar包

/usr/local/hadoop/share/hadoop/hdfs/lib下所有jar包

 

 

 (三)現在就可以開始編碼了但是一定要先把hadoop打開,命令是在你的hadoop路徑下./sbin/start-all.sh,輸入jps可以驗證是否打開了hadoop

(1)判斷hdfs上是否存在某文件代碼如下

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFS_Judge_exist {
    public static void main(String[] args){
        try{
            String fileName = "input/test";
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS", "hdfs://localhost:9000");
            conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
            FileSystem fs = FileSystem.get(conf);
            if(fs.exists(new Path(fileName))){
                System.out.println("文件存在");
            }else{
                System.out.println("文件不存在");
            }
 
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

 (2)往HDFS中插入某一個文件代碼如下

        import org.apache.hadoop.conf.Configuration;  
        import org.apache.hadoop.fs.FileSystem;
        import org.apache.hadoop.fs.FSDataOutputStream;
        import org.apache.hadoop.fs.Path;
public class HDFS_insert {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        try {
            Configuration conf = new Configuration();  
            conf.set("fs.defaultFS","hdfs://localhost:9000");
            conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
            FileSystem fs = FileSystem.get(conf);
            byte[] buff = "Hello world".getBytes(); // 要寫入的內容
            String filename = "input/test1.txt"; //要寫入的文件名
            FSDataOutputStream os = fs.create(new Path(filename));
            os.write(buff,0,buff.length);
            System.out.println("Create:"+ filename);
            os.close();
            fs.close();
    } catch (Exception e) {  
            e.printStackTrace();  
    }  
	}

}

 (3)查詢hdfs的文件內容

        import java.io.BufferedReader;
        import java.io.InputStreamReader;
 
        import org.apache.hadoop.conf.Configuration;
        import org.apache.hadoop.fs.FileSystem;
        import org.apache.hadoop.fs.Path;
        import org.apache.hadoop.fs.FSDataInputStream;
public class HDFS_readFile {
    public static void main(String[] args) {
        try {
                Configuration conf = new Configuration();
                conf.set("fs.defaultFS","hdfs://localhost:9000");
                conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
                FileSystem fs = FileSystem.get(conf);
                Path file = new Path("input/test.txt"); 
                FSDataInputStream getIt = fs.open(file);
                BufferedReader d = new BufferedReader(new InputStreamReader(getIt));
                String content = d.readLine(); //讀取文件一行
                System.out.println(content);
                String content1 = d.readLine(); //讀取文件一行
                System.out.println(content1);
                String content2 = d.readLine(); //讀取文件一行
                System.out.println(content2);
                d.close(); //關閉文件
                fs.close(); //關閉hdfs
        } catch (Exception e) {
                e.printStackTrace();
        }
}
}

 (四)下面介紹如何把Java應用程序生成JAR包,部署到Hadoop平台上運行。首先,在Hadoop安裝目錄下新建一個名稱為myapp的目錄,存放jar包。命令:kdir myapp

(1)點擊eclipse導航條中File-Export

 

 

 (2)點擊next

 

 

 第一個Launch Configuration用於設置生成的JAR包被部署啟動時運行的主類,點擊三角形在下拉列表中選擇就好了。

第二個是讓我們填入包存放的路徑,選擇我們剛才新建的myapp路徑

(3)點擊finish

點擊finish的過程中會出現報錯,不要管他直接點確認,哪兩個錯誤提示不影響后面操作

 

(4)在hadoop的路徑下輸入:./bin/hadoop jar ./myapp/HDFS_Judge_exist.jar

這條命令是指我們要使用hadoop,通過jar包的方式,jar包的位置在當前目錄下/myapp/HDFS_Judge_exist.jar的地方

 


免責聲明!

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



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