微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HDFS编程 — 用Java API 操作HDFS

使用Java操作HDFS,首先需要创建maven工程,创建maven工程的方法https://www.cnblogs.com/ynqwer/p/14540108.html

在新建的maven工程的src/main/java/目录下就可以写Java程序操作HDFS,为了方便管理,可以在此目录下创建一个包,然后在包里面新建一个类,写代码操作HDFS。使用Java来操作HDFS大概可以分为三个步骤:

  1. 获取客户端对象
  2. 调用相应的方法来操作HDFS
  3. 关闭资源

根据这三个步骤,写出代码

package com.qwer.hdfs;

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

/*
 * 使用Java操作HDFS的步骤:
 * 1、获取客户端对象
 * 2、调用相应的方法来操作HDFS
 * 3、关闭资源
 */
public class HdfsClient {
	public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
		
		// 集群通讯地址
		URI uri = new URI("hdfs://centos1:8020");
		
		// 集群配置
		Configuration conf = new Configuration();
		
		// 集群用户
		String user = "hadoop";
		
		// 获取客户端对象
		FileSystem fs = FileSystem.get(uri, conf, user);
		
		// 调用方法上传文件
		fs.copyFromLocalFile(false, false, new Path("F:\\hadoop\\input\\test.txt"),new Path( "/test1"));
		
		// 关闭资源
		fs.close();
		
		System.out.println("SUCESS!");
	};
}

运行上面的代码,可以看到在HDFS的根目录下创建了一个test1文件,数据副本数为3

在上面的代码中,可以用conf.set()来进行一些设置,例如:conf.set("dfs.replication", "2")来设置上传时候的数据副本数为2,代码如下

package com.qwer.hdfs;

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

/*
 * 使用Java操作HDFS的步骤:
 * 1、获取客户端对象
 * 2、调用相应的方法来操作HDFS
 * 3、关闭资源
 */
public class HdfsClient {
	public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
		
		// 集群通讯地址
		URI uri = new URI("hdfs://centos1:8020");
		
		// 集群配置
		Configuration conf = new Configuration();
               
                // 设置数据副本数为2
                conf.set("dfs.replication", "2");
		
		// 集群用户
		String user = "hadoop";
		
		// 获取客户端对象
		FileSystem fs = FileSystem.get(uri, conf, user);
		
		// 调用方法上传文件
		fs.copyFromLocalFile(false, false, new Path("F:\\hadoop\\input\\test.txt"),new Path( "/test2"));
		
		// 关闭资源
		fs.close();
		
		System.out.println("SUCESS!");
	};
}

执行上面代码,可以看到在HDFS的根目录下面创建了一个test2文件,数据副本数为2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐