利用 Hadoop FileSystem 和 FsPermission mkdirs 方法建立目錄 實現HDFS操作
阿新 • • 發佈:2019-02-10
Hadoop 版本 2.7.0
package com.feng.test.hdfs.filesystem;
import java.io.IOException;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsAction;
import org.apache.hadoop.fs.permission.FsPermission;
/**
* 建立目錄並設定許可權
* 遠端呼叫機器 需要 liunx 修改 /etc/hosts 新增 10.11.12.4 master
* @author feng
*
*/
public class CreateDir {
public static void main(String[] args) {
FileSystem hdfs = null;
try{
Configuration config = new Configuration();
// 程式配置
config.set("fs.default.name", "hdfs://master:9000");
hdfs = FileSystem.get(new URI("hdfs://master:9000"),
config, "feng");
Path path = new Path("/feng/tmp/"+System.currentTimeMillis());
if(hdfs.exists(path)){
System.out.println("There is already exist " + path);
}else{
FsPermission filePermission = null ;
filePermission = new FsPermission(
FsAction.ALL, //user action
FsAction.ALL, //group action
FsAction.READ);//other action
//建立目錄 不設定許可權,預設為當前hdfs伺服器啟動使用者
//boolean success = hdfs.mkdirs(path, null);
boolean success = hdfs.mkdirs(path, filePermission);
System.out.println(path + " is success " + success);
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(hdfs != null){
try {
hdfs.closeAll();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}