閱讀489 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《Hadoop與大數據挖掘》一2.4.1 HDFS Java API操作

本節書摘來華章計算機《Hadoop與大數據挖掘》一書中的第2章 ,第2.4.1節,張良均 樊 哲 位文超 劉名軍 許國傑 周 龍 焦正升 著 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。

2.4.1 HDFS Java API操作

Hadoop中關於文件操作類基本上是在org.apache.hadoop.fs包中,這些API能夠支持的操作有:打開文件,讀寫文件,刪除文件,創建文件、文件夾,判斷是文件或文件夾,判斷文件或文件夾是否存在等。
Hadoop類庫中最終麵向用戶提供的接口類是FileSystem,這個類是個抽象類,隻能通過類的get方法得到其實例。get方法有幾個重載版本,如圖2-28所示。


image


比較常用的是第一個,即灰色背景的方法。
FileSystem針對HDFS相關操作的API如表2-5所示。

image


代碼清單2-22,是FileSystem API的一個簡單示例。該代碼首先獲取FileSystem的一個實例,然後調用該實例的listStatus方法,獲取所有根目錄下麵的文件或文件夾(注意這裏獲取的不包含遞歸子目錄);接著,調用create方法創建一個新文件,並寫入“Hello World!”;最後,讀取剛才創建的文件,並把創建的文件內容打印出來;關閉FileSystem實例。

代碼清單2-22 FileSystem API示例
package demo;
import java.io.IOException;

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

public class FileSystemAPIDemo {
public static void main(String[] args) throws IOException {
    // 獲取Hadoop默認配置
    Configuration conf = new Configuration();
    conf.set("fs.defaultFS", "hdfs://master:8020"); // 配置HDFS
    // 獲取HDFS FileSystem實例
    FileSystem fs = FileSystem.get(conf);

    // 列出根目錄下所有文件及文件夾
    Path root = new Path("hdfs://master:8020/");
    FileStatus[] children = fs.listStatus(root);
    for(FileStatus child :children){
        System.out.println(child.getPath().getName());
    }

    // 創建文件並寫入“HelloWorld!”
    Path newFile = new Path("hdfs://master:8020/user/fansy/new.txt");   // 注意路徑需要具有寫權限
    if(fs.exists(newFile)){         // 判斷文件是否存在
        fs.delete(newFile, false);      // 如果存在,則刪除文件
    }
    FSDataOutputStream out = fs.create(newFile);    // 創建文件
    out.writeUTF("Hello World!");           // 寫入“Hello World!”
    out.close();                    // 關閉輸出流

    // 讀取文件內容
    FSDataInputStream in = fs.open(newFile);    // 打開文件
    String info = in.readUTF();         // 讀取輸入流
    System.out.println(info);           // 打印輸出

    // 關閉文件係統實例
    fs.close();
}
}

執行完成後,在HDFS上可以看到創建的文件及內容,如圖2-29所示。

最後更新:2017-06-26 10:02:28

  上一篇:go  java 企業站源碼 主流SSM框架 freemaker 靜態引擎 響應式 兼容手機平板PC
  下一篇:go  activiti 工作流的 整合視頻教程 SSM和獨立部署 web 流程設計器