(八)、HDFS Java 接口

环境:
windows 7
eclipse

先在 windows 7 下搭建好 eclipse 项目环境, 参考 安装 Eclipse

新建 hadoop 工程, 新建个 lib 文件夹, 导入 hdfs 的相关 jar 包:

  • /usr/itcast/hadoop-2.7.1/share/hadoop/common
  • /usr/itcast/hadoop-2.7.1/share/hadoop/common/lib
  • /usr/itcast/hadoop-2.7.1/share/hadoop/hdfs

测试 hdfs 导入这些目录下的 jar 就可以了…

选中导入后所有的 jar 包, 右键 [构建路径] -> [添加到构建路径]

接下来, 设置下 eclipse 的自动提示.
window –> Preferences –> Java –> Editor –> Content Assist:

abcdefghijklmnopqrstuvwxyz.

接下来直接上源码好了:

package cn.itcast.hadoop.hdfs;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.Before;
import org.junit.Test;


public class HDFSDemo {
    FileSystem fs = null;

    // 链接 hdfs
    @Before
    public void init() throws IOException, URISyntaxException, InterruptedException {
        // 首先创建  FileSystem 的实现类(工具类) -- 用来操作 hdfs
        fs = FileSystem.get(new URI("hdfs://192.168.31.200:9000"), new Configuration());
    }

    // 上传文件
    public void testUpload() throws IllegalArgumentException, IOException {
        InputStream in = new FileInputStream("C:\\Users\\Public.Public-PC\\Desktop\\test.txt");
        OutputStream out = fs.create(new Path("/test.txt"));
        IOUtils.copyBytes(in, out, 4096, true);
    }

    // 另一种方式 下载文件
    @Test
    public void testDownload() throws IllegalArgumentException, IOException {
        fs.copyToLocalFile(new Path("/words.txt"), new Path("C:\\Users\\Public.Public-PC\\Desktop\\words.txt"));
    }

    // 删除文件
    public void testDelete() throws IllegalArgumentException, IOException {
        fs.delete(new Path("/test.txt"), true);
    }

    // 下载文件
    public static void main(String[] args) throws IOException, URISyntaxException {
        // TODO Auto-generated method stub
        InputStream in = fs.open(new Path("/words.txt"));
        OutputStream out = new FileOutputStream("C:\\Users\\Public.Public-PC\\Desktop\\words.txt");
        IOUtils.copyBytes(in, out, 4096, true);
    }

}

当我们上传文件时, 可能会报权限不足的错误, 此时, 需要去 linux 里修改下 hdfs 的配置.
进入 sbin vim hdfs-site.xml

<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>

不过, 这种方式总感觉不安全, 期待以后有更好的方法.

另外, 可以在 hadoop 官网上下载它的源码, 添加到 eclipse 里关联起来.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值