通过HDFS API 进行HDFS操作

通过HDFS API 进行HDFS操作

HDFS Java API 的一般用法如下

(1)实例化Configuration类

​ Configuration类封装了客户端或服务器的配置,Configuration实例会自动加载HDFS的配置文件core-site.xml,从中获取Hadoop集群的配置信息。

Configuration conf = new Configuration();

(2)实例化FileSystem类

​ FileSystem类是客户端访问文件系统的入口,是一个抽象的文件系统类。

​ DistributedFileSystem类是FileSystem类的一个具体实现。

FileSystem fs = FileSystem.get(uri,conf,"username");
//uri是URI类的实例,username表示用户名

(3)设置目标对象的路径

​ HDFS Java API 提供了Path类封装HDFS文件路径。Path类位于org.apache.hadoop.fs 包中。

Path path = new Path("/test");

(4)执行文件或目录操作

1、上传文件

上传方式:

①FileSystem类自带的copyFromLocalFile接口

/**
 * 采用FileSystem类自带的copyFromLocalFile接口上传文件。
 * 将本地D:\test.txt文件上传之HDFS的 /mydir 下
 */

package org.example;

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
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.hdfs.DFSClient;
import org.apache.hadoop.io.IOUtils;
import org.apache.log4j.BasicConfigurator;

//HDFS Upload

public class Upload1 {
   
    public static void main(String[] args) throws Exception{
   
        BasicConfigurator.configure();
        Configuration conf = new Configuration();
        URI uri = new URI("hdfs://192.168.245.128:8020");
        FileSystem fs = FileSystem.get(uri,conf,"bigdata");

        //Local file
        Path src = new Path("d:\\test.txt");
        //HDFS file
        Path dst = new Path("/mydir/test.txt");

        fs.copyFromLocalFile(src,dst);

        fs.close();
        System.out.println("Upload Successfully");
    }
}

②通过流拷贝的方式

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
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.hdfs.DFSClient;
import org.apache.hadoop.io.IOUtils;
import org.apache
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值