使用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

最新文章

  1. Java 程序优化 (读书笔记)
  2. Javascript分号,加还是不加?
  3. CMS系统的实现图
  4. Windows计划任务执行时不显示窗口的问题
  5. 深入理解include预编译原理
  6. struts2的 result 通配符 OGNL
  7. 码农谷 求前N项之和
  8. C++ 11 之初始化
  9. C#网络资源列表
  10. 面向服务的体系结构(service-oriented architecture,SOA)
  11. Delphi中一些常用的组合键值
  12. js 实现关键词球状旋转效果
  13. Swift - 32 - 函数类型
  14. Spinner 实现key value 效果
  15. cf C. Alice and Bob
  16. 转: Promises与Javascript异步编程
  17. CMDeviceMotion使用
  18. WP8.1开发中找程序下的Assets文件夹
  19. 使用Crowd集成Confluence与JIRA
  20. nginx+tomcat:动静分离+https

热门文章

  1. C 标准 C89/C90/C99/C11/C17
  2. gcc 中weak弱函数
  3. 数据库管理工具navicat16.0安装
  4. flutter Color和colors
  5. sqoop,hive2mysql
  6. IT部门一线主管要如何才能对员工的某项工作的时间和难度评估心里有数?
  7. Java之时间类
  8. mybatis原理探究
  9. Word04 公司战略规划文档office真题
  10. Mysql数据库基础第二章:(八)子查询经典案例