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 ...
 
随机推荐
- MyBatis_01(前置知识)
			
1-学习思路(课程主要内容): 2-MyBatis特性 3- MyBatis下载 但是我们在使用MyBatis的时候,都是直接 "Maven导入MyBatis的jar包" (所以, ...
 - java写 变量到文件
			
import java.io.BufferedReader; import java.io.File;import java.io.FileReader; import java.io.IOExcep ...
 - chia P图安装
			
https://techtellectual.com/chia-plotting-guide-installing-plotman-and-mad-max-in-linux/ Chia 绘图指南:在 ...
 - 打开IE浏览器被强制跳转至edge
			
打开edge浏览器,右上角更多,设置,默认浏览器,设置"从不" 控制面板,Internet选项,高级,浏览,取消勾选"启用第三方浏览器扩展"
 - clickHouse安装踩坑
			
1.查看版本 clickhouse-server --version 2.下载 linux机器上 wget下载,有两个安装包体积较大 wget https://packages.clickhouse ...
 - Vue2+Cesium1.9+热力图开发笔记
			
1.安装cesiumJS.heatmap.webpack插件依赖包: yarn install/npm install "dependencies": { ... "ce ...
 - C#中DataTable新增列、删除列、更改列名、交换列位置
			
一.新增列 1.1.新增列 /*新增列*/ dataTable.Columns.Add("列名称", Type.GetType("数据类型")); /*比如添加 ...
 - linux下项目自动化备份
			
#! /bin/bash # 日期: 20220927 # 执行环境: 192.168.25.38 # 功能: 每周自动备份/data下"elasticsearch|project|soft ...
 - Oracle View的Force參數有什麼用途?
			
1. 當建立View的SQL查詢語句因為各種問題還暫時無法執行時,可以使用Force參數先建立成功2. SQL的問題沒有修正之前,是無法正常使用View的 語法: CREATE Force VIEW ...
 - 没解决的问题-git连接失败
			
[parallels@localhost ~]$ ssh-keygen -t rsa -C '1012144290@qq.com'Generating public/private rsa key p ...