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大概可以分为三个步骤:
- 获取客户端对象
- 调用相应的方法来操作HDFS
- 关闭资源
根据这三个步骤,写出代码
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

HDFS编程 —— 用Java API 操作HDFS的更多相关文章
- 使用Java API操作HDFS文件系统
使用Junit封装HFDS import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org ...
- HDFS 05 - HDFS 常用的 Java API 操作
目录 0 - 配置 Hadoop 环境(Windows系统) 1 - 导入 Maven 依赖 2 - 常用类介绍 3 - 常见 API 操作 3.1 获取文件系统(重要) 3.2 创建目录.写入文件 ...
- 使用Java Api 操作HDFS
如题 我就是一个标题党 就是使用JavaApi操作HDFS,使用的是MAVEN,操作的环境是Linux 首先要配置好Maven环境,我使用的是已经有的仓库,如果你下载的jar包 速度慢,可以改变Ma ...
- hadoop学习笔记(五):java api 操作hdfs
HDFS的Java访问接口 1)org.apache.hadoop.fs.FileSystem 是一个通用的文件系统API,提供了不同文件系统的统一访问方式. 2)org.apache.hadoop. ...
- HDFS基础和java api操作
1. 概括 适合一次写入多次查询情况,不支持并发写情况 通过hadoop shell 上传的文件存放在DataNode的block中,通过linux shell只能看见block,看不见文件(HDFS ...
- Hadoop Java API操作HDFS文件系统(Mac)
1.下载Hadoop的压缩包 tar.gz https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/ 2.关联jar包 在 ...
- 大数据之路week07--day01(HDFS学习,Java代码操作HDFS,将HDFS文件内容存入到Mysql)
一.HDFS概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 ...
- 使用java api操作HDFS文件
实现的代码如下: import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import ...
- Hadoop之HDFS(三)HDFS的JAVA API操作
HDFS的JAVA API操作 HDFS 在生产应用中主要是客户端的开发,其核心步骤是从 HDFS 提供的 api中构造一个 HDFS 的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS ...
- JAVA API连接HDFS HA集群
使用JAVA API连接HDFS时我们需要使用NameNode的地址,开启HA后,两个NameNode可能会主备切换,如果连接的那台主机NameNode挂掉了,连接就会失败. HDFS提供了names ...
随机推荐
- 解决在Android studio的Button控件下background背景设置不起作用的问题
Button控件默认的背景是深紫色的,有时候会看不清按钮上的文本,显得很不方便,想要修改背景色所以添加了background字段,但是又不起作用!!! 1.找到values文件夹下面的themes文件 ...
- update_base_x.txt
update g_temp.test_baseset field_date = '20210101'::datewhere field_int = 6
- 基于winds10 安装docker 踩坑记录
1.官方下载 https://www.docker.com/ 2.根据提示安装 并重庆计算机3.双击运行 报 Docker Desktop is shutting down 提示 计算机c: 盘 A ...
- 对mvc模式的理解
Model-View-Controller MVC模式是个威力强大的复合模式,是由数个设计模式结合起来的模式: 我们先看一下一个mp3播放器的设计,来由浅至深地了解这个设计模式的精髓所在: 从最直观的 ...
- Jupyter 快捷键1
Jupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的.命令模式,键盘输入运行程序命令:这时的单元框线是灰色. 命令模式 (按键 Esc ...
- docker nginx 配置
1.下载镜像 docker pull nginx2宿主机器建立目录/docker/nginx/conf.d 这个目录下面新建 default.conf upstream tomcat77{ serve ...
- 动态规划-1-钢条切割(Dynamic Programming-1-rod cutting)
1 #include <stdio.h> 2 #define LEN 10 3 #define NEGINF -999999 4 struct r_d { 5 int r; //profi ...
- android 打包任务在gradle中
//打包任务task makexxxxxxJar(type: Jar) { //指定生成的jar名 baseName xxxxxx //从哪里打包class文件 from('build/interme ...
- C# List 分页代码
List<int> testList = new List<int>();for (int i = 1; i <= 23; i++){ testList.Add(i);} ...
- fabric学习笔记2
fabric学习笔记2 20201303张奕博 2023.1.10 Fabric云服务器搭建 参考视频:视频链接:https://www.bilibili.com/video/BV1gV4y1M7q3 ...