hdfs常用api(java)
1.下载文件到本地
public class HdfsUrlTest {
static{
//注册url 让java程序识别hdfs的url
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) {
InputStream in = null;
OutputStream out = null;
try {
String file = "hdfs://hadoop-yarn.test.com:8020/user/testi/conf/core-site.xml";
URL fileUrl = new URL(file);
in = fileUrl.openStream();
out = new FileOutputStream(new File("d:/core-site.xml"));
//下载文件到本地
IOUtils.copyBytes(in,out,4096, false);
} catch (Exception e) {
e.printStackTrace();
}finally{
IOUtils.closeStream(in);}}}
2.查看集群信息
public static void cluserStatus() throws Exception{
FileSystem fs = HdfsUtil.getFs();
DistributedFileSystem dfs = (DistributedFileSystem)fs;
FsStatus fss = dfs.getStatus();
DatanodeInfo[] datanodeInfos = dfs.getDataNodeStats();
for(DatanodeInfo datanodeinfo : datanodeInfos){
System.out.println(datanodeinfo.getHostName());}}
3.创建一个文件夹
public void testHDFSMkdir() throws Exception{
String hdfsUrl = "hdfs://192.168.10.11:8020";
Configuration conf= new Configuration();
FileSystem fs = FileSystem.get(URI.create(hdfsUrl),conf);
Path path = new Path("/bigdata");
fs.mkdirs(path);}
4.创建一个文件
public void testCreateFile() throws Exception{
String hdfsUrl = "hdfs://192.168.10.11:8020";
Configuration conf= new Configuration();
FileSystem fs = FileSystem.get(URI.create(hdfsUrl),conf);
Path path = new Path("/bigdata/a.txt");
FSDataOutputStream out = fs.create(path);
out.write("hello hadoop".getBytes());}
5.文件重命名
public void testRenameFile() throws Exception{
String hdfsUrl = "hdfs://192.168.10.11:8020";
Configuration conf= new Configuration();
FileSystem fs = FileSystem.get(URI.create(hdfsUrl),conf);
Path path = new Path("/bigdata/a.txt");
Path newPath = new Path("/bigdata/b.txt");
System.out.println(fs.rename(path, newPath));}
6.上传文件
public static void write() throws Exception{
FileSystem fs = HdfsUtil.getFs();
OutputStream outStream = fs.create(new Path("/user/lcc/conf/put-core-site.xml"));
FileInputStream inStream = new FileInputStream(new File("d:/core-site.xml"));
IOUtils.copyBytes(inStream, outStream, 4096, true);}
Hadoop程序想读取hdfs中的数据,最简单的方法是使用java的URL对象打开一个数据流,并从中读取数据。
需要一个fsUrlStreamHandlerFactory实例调用set过的一个URL,这种方法java虚拟机只能调用一次,缺点是如果程序的其他部分也设置了这个,会导致无法再从hadoop中读取数据。
新方法,需要使用filesystem的api打开一个文件的输入流。
文件在hadoop文件系统中被视为一个hadoop path对象,把一个文件夹或文件路径看做为一个hadoop文件系统的URL。
三种方法。
Get(conf)和get(uri,conf),newInstance
hdfs常用api(java)的更多相关文章
- HDFS 05 - HDFS 常用的 Java API 操作
目录 0 - 配置 Hadoop 环境(Windows系统) 1 - 导入 Maven 依赖 2 - 常用类介绍 3 - 常见 API 操作 3.1 获取文件系统(重要) 3.2 创建目录.写入文件 ...
- HDFS常用的Java Api详解
转自:http://blog.csdn.net/michaelwubo/article/details/50879832 一.使用Hadoop URL读取数据 package hadoop; impo ...
- HDFS连接JAVA,HDFS常用API
先在pom.xml中导入依赖包 <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/ha ...
- HDFS常用API操作 和 HDFS的I/O流操作
前置操作 创建maven工程,修改pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...
- HDFS常用API(2)
一.读取HDFS文件数据.将本地文件写入HDFS中文件.使用IOUtils读写数据 ** * @author: PrincessHug * @date: 2019/3/18, 17:24 * @Blo ...
- HDFS常用API(1)
一.HDFS集群API所需要jar包的maven配置信息 <dependency> <groupId>org.apache.hadoop</groupId> < ...
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...
- 大数据(5) - HDFS中的常用API操作
一.安装java 二.IntelliJ IDEA(2018)安装和破解与初期配置 参考链接 1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/d ...
- java基础3.0:Java常用API
本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...
随机推荐
- 二分图&网络流初步
链接 : 最小割&网络流应用 EK太低级了,不用. 那么请看:#6068. 「2017 山东一轮集训 Day4」棋盘,不用EK你试试? dinic模板及部分变形应用见zzz大佬的博客:网络流学 ...
- NIO入门之缓冲区Buffer
缓存区 Buffer 是数据容器 ByteBuffer 可以存储除了 boolean 以外的其他 7 种Java基本数据类型,如 getInt.putInt Buffer 是抽象类,它有除了 Bool ...
- windows如何解决Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
问题再现与解读 首次,使用 java 命令+任意参数 都会报这个错误,最典型的就是java -version 解读一下这个报错信息,注册表路径 Software\JavaSoft\Java Runti ...
- Flutter防止布局溢出
添加一层可滑动View(Widget)的布局, 将之前进行包裹: return new Scaffold( appBar: new AppBar( title: new Tex ...
- 为什么不应该使用goroutine id?
Goroutine id 的获取方式 之前做的项目中,会使用 goroutine-id(以下简称 goid) 作为日志中的一个标识参数.而 goroutine 的相关信息是不对外暴露的.想要获取 go ...
- 今天完成顺利编译d:\test\Console.java
今天完成顺利编译d:\test\Console.java import javax.swing.*;import java.awt.event.*; public class Console{ pub ...
- 00_02_使用Parallels Desktop创建Windos7虚拟机
准备工作 如果要看图片的准备过程请参考该链接 需要注意的是给CPU配置为一个核,内存分配1024M 硬盘空间划分为60G 操作系统安装设置 注:windows系统设置一般都是"下一步&quo ...
- Python定义一个函数
Python函数:实现某种功能的代码段 定义一个函数需要遵循的规则: 1.使用 def 关键字 函数名和( ),括号内可以有形参 匿名函数使用 lambda 关键字定义 2.任何传入参数和自变量必须放 ...
- Python os.ftruncate() 方法
概述 os.ftruncate() 裁剪文件描述符fd对应的文件, 它最大不能超过文件大小.高佣联盟 www.cgewang.com Unix, Windows上可用. 语法 ftruncate()方 ...
- 4.22 省选模拟赛 三元组 manacher 回文自动机
容易发现可以枚举j 那么只需要计算出 l~j这段是回文串的l的和 以及j+1~r这段是回文串的r的和. 可以manacher 之后想要求出以j为右端点的回文串左端点的和 这个东西我们通过某个点为中心的 ...