hdfs编程实例

package hdfs;

import java.io.IOException;
import java.sql.Date;
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;  

/** 
 * 利用HDFS的API,使用Java编写文件创建,写入,读取 
 * @author Administrator 
 * 
 */  
public class HDFSJavaAPIDemo {  

    public static void main(String[] args) throws IOException {
        //throws IOException捕获异常声明
        //读取hadoop文件系统配置
        Configuration conf = new Configuration();  //实例化设置文件,configuration类实现hadoop各模块之间值的传递

        FileSystem fs = FileSystem.get(conf);  //是hadoop访问系统的抽象类,获取文件系统, FileSystem的get()方法得到实例fs,然后fs调动create()创建文件,open(0打开文件


            System.out.println(fs.getUri());  

        Path file = new Path("/user/cMaster/myfile");  //命名一个文件

        if (fs.exists(file)) {  

                System.out.println("File exists.");  

        } else
            {  

            // Writing to file  
           FSDataOutputStream outStream = fs.create(file); //获取文件流 

           outStream.writeUTF("china cstor cstor cstor china"); //使用文件流写入文件内容 

           outStream.close();  
        }  

        // Reading from file  
       // FSDataInputStream实现了和接口,从而使Hadoop中的文件输入流具有流式搜索和流式定位读取的功能
        FSDataInputStream inStream = fs.open(file);  //获取文件流

        String data = inStream.readUTF();  //使用输出流读取文件

        //status from file
        //FileStatus对象封装了文件的和目录的额元数据,包括文件长度、块大小、权限等信息
        FileSystem hdfs = file.getFileSystem(conf);

        FileStatus[] fileStatus = hdfs.listStatus(file);

        for(FileStatus status:fileStatus)

        {
           System.out.println("FileOwer:"+status.getOwner());//所有者
           System.out.println("FileReplication:"+status.getReplication());//备份数
           System.out.println("FileModificationTime:"+new Date(status.getModificationTime()));//目录修改时间
           System.out.println("FileBlockSize:"+status.getBlockSize());//块大小
        }

        System.out.println(data); 
        System.out.println("Filename:"+file.getName());//文件名

        inStream.close();  
        fs.close();  
    }  
}  
  Hadoop fs -mkdir /user/cMaster/myfile
Hadoop jar hdfsOperate.jar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值