博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDFS Java API 常用操作
阅读量:6713 次
发布时间:2019-06-25

本文共 3707 字,大约阅读时间需要 12 分钟。

package com.luogankun.hadoop.hdfs.api;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.BlockLocation;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileStatus;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IOUtils;import org.apache.hadoop.util.Progressable;import org.junit.After;import org.junit.Before;import org.junit.Test;/** * HDFS Java API操作 * @author luogk * */public class HDFSApp {    public static final String HDFS_PATH = "hdfs://hadoop000:8020";        Configuration configuration = null;    FileSystem fileSystem = null;        @Before    public void setUp() throws Exception{        System.out.println("HDFSApp.setUp()");        configuration = new Configuration();        fileSystem = FileSystem.get(new URI(HDFS_PATH), configuration);    }        /**     * 创建目录     */    @Test    public void mkdir() throws Exception {        fileSystem.mkdirs(new Path("/hdfsapi/test"));    }        /**     * 创建文件     */    @Test    public void create() throws Exception  {        FSDataOutputStream output = fileSystem.create(new Path("/hdfsapi/test/a.txt"));        output.write("hello world".getBytes());        output.flush();        output.close();    }        /**     * 重命名     */    @Test    public void rename() throws Exception  {        Path oldPath = new Path("/hdfsapi/test/a.txt");        Path newPath = new Path("/hdfsapi/test/b.txt");        System.out.println(fileSystem.rename(oldPath, newPath));    }        /**     * 上传本地文件到HDFS     */    @Test    public void copyFromLocalFile() throws Exception  {        Path src = new Path("d:/case2.sql");        Path dist = new Path("/hdfsapi/test/");        fileSystem.copyFromLocalFile(src, dist);    }        /**     * 上传本地文件到HDFS     */    @Test    public void copyBytes() throws Exception  {        InputStream in = new BufferedInputStream(new FileInputStream(new File("D:/software/apache/spark/spark-1.1.0-SNAPSHOT-bin-2.3.0-cdh5.0.0.tgz")));        FSDataOutputStream out = fileSystem.create(new Path("/hdfsapi/test/spark.tgz"), new Progressable() {            @Override            public void progress() {                System.out.print("."); //带进度提示信息            }        });        IOUtils.copyBytes(in, out, 4096);    }        /**     * 查看某个目录下的所有文件     */    @Test    public void listFiles() throws Exception  {        FileStatus[] listStatus = fileSystem.listStatus(new Path("/hdfsapi/test"));        for (FileStatus fileStatus : listStatus) {            String isDir = fileStatus.isDirectory()?"文件夹":"文件";  //文件/文件夹            String permission = fileStatus.getPermission().toString(); //权限            short replication = fileStatus.getReplication(); //副本系数            long len = fileStatus.getLen(); //长度            String path = fileStatus.getPath().toString(); //路径            System.out.println(isDir+"\t"+permission+"\t"+replication+"\t"+len+"\t"+path);        }    }        /**     * 查看文件块信息     */    @Test    public void getFileBlockLocations() throws Exception  {        FileStatus fileStatus = fileSystem.getFileStatus(new Path("/hdfsapi/test/spark.tgz"));        BlockLocation[] blocks = fileSystem.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());        for(BlockLocation block : blocks) {            for(String host : block.getHosts()){                System.out.println(host);            }        }    }        @After    public void tearDown() throws Exception{        fileSystem = null;        configuration = null;        System.out.println("HDFSApp.tearDown()");    }}

 

转载地址:http://yxhlo.baihongyu.com/

你可能感兴趣的文章
在路由器里插入和删除ACL
查看>>
我的友情链接
查看>>
前端开发IDE
查看>>
OpenStack从入门到放弃
查看>>
戴尔和EMC已经成为正式的竞争对手
查看>>
6425C-Lab12 管理DC(1)
查看>>
RocketMQ调研笔记
查看>>
maven 注册 jar
查看>>
高并发写入mysql的设计
查看>>
成长点滴:我不知道该说些什么?
查看>>
Android widget 桌面组件开发
查看>>
HP EVA4400服务器RAID信息丢失数据恢复方法
查看>>
我的友情链接
查看>>
heap中的heapify与依次压入队列的差异
查看>>
找工作体会
查看>>
linux之使用man查看命令手册
查看>>
健康常识
查看>>
Centos 6.3安装配置supervisor进程管理工具
查看>>
jquery ajax超时设置
查看>>
有兴趣,便且坚持下来。。。。。make it
查看>>