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)的更多相关文章

  1. HDFS 05 - HDFS 常用的 Java API 操作

    目录 0 - 配置 Hadoop 环境(Windows系统) 1 - 导入 Maven 依赖 2 - 常用类介绍 3 - 常见 API 操作 3.1 获取文件系统(重要) 3.2 创建目录.写入文件 ...

  2. HDFS常用的Java Api详解

    转自:http://blog.csdn.net/michaelwubo/article/details/50879832 一.使用Hadoop URL读取数据 package hadoop; impo ...

  3. HDFS连接JAVA,HDFS常用API

    先在pom.xml中导入依赖包 <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/ha ...

  4. HDFS常用API操作 和 HDFS的I/O流操作

    前置操作 创建maven工程,修改pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  5. HDFS常用API(2)

    一.读取HDFS文件数据.将本地文件写入HDFS中文件.使用IOUtils读写数据 ** * @author: PrincessHug * @date: 2019/3/18, 17:24 * @Blo ...

  6. HDFS常用API(1)

    一.HDFS集群API所需要jar包的maven配置信息 <dependency> <groupId>org.apache.hadoop</groupId> < ...

  7. Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...

  8. 大数据(5) - HDFS中的常用API操作

    一.安装java 二.IntelliJ IDEA(2018)安装和破解与初期配置 参考链接 1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/d ...

  9. java基础3.0:Java常用API

    本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...

随机推荐

  1. 二分图&网络流初步

    链接 : 最小割&网络流应用 EK太低级了,不用. 那么请看:#6068. 「2017 山东一轮集训 Day4」棋盘,不用EK你试试? dinic模板及部分变形应用见zzz大佬的博客:网络流学 ...

  2. NIO入门之缓冲区Buffer

    缓存区 Buffer 是数据容器 ByteBuffer 可以存储除了 boolean 以外的其他 7 种Java基本数据类型,如 getInt.putInt Buffer 是抽象类,它有除了 Bool ...

  3. windows如何解决Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'

    问题再现与解读 首次,使用 java 命令+任意参数 都会报这个错误,最典型的就是java -version 解读一下这个报错信息,注册表路径 Software\JavaSoft\Java Runti ...

  4. Flutter防止布局溢出

    添加一层可滑动View(Widget)的布局, 将之前进行包裹: return new Scaffold(      appBar: new AppBar(        title: new Tex ...

  5. 为什么不应该使用goroutine id?

    Goroutine id 的获取方式 之前做的项目中,会使用 goroutine-id(以下简称 goid) 作为日志中的一个标识参数.而 goroutine 的相关信息是不对外暴露的.想要获取 go ...

  6. 今天完成顺利编译d:\test\Console.java

    今天完成顺利编译d:\test\Console.java import javax.swing.*;import java.awt.event.*; public class Console{ pub ...

  7. 00_02_使用Parallels Desktop创建Windos7虚拟机

    准备工作 如果要看图片的准备过程请参考该链接 需要注意的是给CPU配置为一个核,内存分配1024M 硬盘空间划分为60G 操作系统安装设置 注:windows系统设置一般都是"下一步&quo ...

  8. Python定义一个函数

    Python函数:实现某种功能的代码段 定义一个函数需要遵循的规则: 1.使用 def 关键字 函数名和( ),括号内可以有形参 匿名函数使用 lambda 关键字定义 2.任何传入参数和自变量必须放 ...

  9. Python os.ftruncate() 方法

    概述 os.ftruncate() 裁剪文件描述符fd对应的文件, 它最大不能超过文件大小.高佣联盟 www.cgewang.com Unix, Windows上可用. 语法 ftruncate()方 ...

  10. 4.22 省选模拟赛 三元组 manacher 回文自动机

    容易发现可以枚举j 那么只需要计算出 l~j这段是回文串的l的和 以及j+1~r这段是回文串的r的和. 可以manacher 之后想要求出以j为右端点的回文串左端点的和 这个东西我们通过某个点为中心的 ...