一、从hdfs下载文件到windows本地:

package com.css.hdfs01;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;/*** 从hdfs下载文件到windows本地*    * 注意:* 1.需要配置hadoop环境变量* 2.需要编译好的winutils包*/
public class HdfsClientDemo02 {public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException {// 1.加载配置Configuration conf = new Configuration();// 2.设置副本数conf.set("dfs.replication", "2");// 3.设置块大小conf.set("dfs.blocksize", "64m");// 4.构造客户端FileSystem fs = FileSystem.get(new URI("hdfs://192.168.146.132:9000"), conf, "root");// 5.hdfs数据下载到windows本地fs.copyToLocalFile(new Path("/hdfs-site.xml"), new Path("c:/"));// 6.关闭资源
        fs.close();}
}

二、hdfs常用的API:

package com.css.hdfs02;import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
import org.junit.Before;
import org.junit.Test;/*** hdfs常用的API*/
public class HdfsClientTest {FileSystem fs =null;@Beforepublic  void init() throws IOException, InterruptedException, URISyntaxException {// 1.加载配置Configuration conf = new Configuration();// 2.设置副本数conf.set("dfs.replication", "2");// 3.设置块大小conf.set("dfs.blocksize", "64m");// 4.构造客户端fs = FileSystem.get(new URI("hdfs://192.168.146.132:9000/"), conf, "root");}/*** 在hdfs中创建文件夹* hdfs dfs -mkdir /文件夹名*/@Testpublic void hdfsMkdir() throws IllegalArgumentException, IOException{// 1.调用创建文件夹方法fs.mkdirs(new Path("/hello"));// 2.关闭资源
        fs.close();}/*** 在hdfs中 移动/修改文件* hdfs dfs -mv /hdfs路径 /hdfs路径* hdfs dfs -cp /hdfs路径 /hdfs路径        */@Testpublic void hdfsRename() throws IllegalArgumentException, IOException{// 1.调用移动修改文件方法fs.rename(new Path("/aa.txt"), new Path("/hello/aa.txt"));// 2.关闭资源
        fs.close();}/*** 在hdfs中 删除文件/文件夹* hdfs dfs -rm /文件名* hdfs dfs -rm -r /文件夹名*/@Testpublic void hdfsRm() throws IllegalArgumentException, IOException{// 1.调用删除文件方法// 下面的一个参数的方法已弃用// fs.delete(new Path("/aaaa.txt"));// 参数1:要删除的路径  参数2:是否递归删除fs.delete(new Path("/aaa111.txt"), true);// 2.关闭资源
        fs.close();}/*** 查询hdfs下指定的目录信息*/@Testpublic void hdfsLs() throws IllegalArgumentException, IOException{// 1.调用方法,返回远程迭代器    RemoteIterator<LocatedFileStatus> iter = fs.listFiles(new Path("/"), true);// 2.取迭代器数据while (iter.hasNext()) {// 拿数据LocatedFileStatus status = iter.next();System.out.println("文件的路径为:" + status.getPath());System.out.println("块大小为:" + status.getBlockSize());System.out.println("文件长度为:" + status.getLen());System.out.println("副本数量为:" + status.getReplication());System.out.println("块信息为:" + Arrays.toString(status.getBlockLocations()));System.out.println("===============================");}// 3.关闭资源
        fs.close();}/*** 判断文件还是文件夹*/@Testpublic void hdfsFile() throws IllegalArgumentException, IOException{// 1.展示状态信息FileStatus[] listStatus = fs.listStatus(new Path("/"));// 2.遍历所有文件for(FileStatus ls:listStatus){if (ls.isFile()) {// 文件System.out.println("文件-----f-----" + ls.getPath().getName());}else {// 文件夹System.out.println("文件夹-----d-----" + ls.getPath().getName());}}}
}

三、hdfs读写文件:

package com.css.hdfs03;import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.Before;
import org.junit.Test;/*** hdfs读写文件*/
public class ReadData {FileSystem fs =null;@Beforepublic  void init() throws IOException, InterruptedException, URISyntaxException {// 1.加载配置Configuration conf = new Configuration();// 2.构造客户端fs = FileSystem.get(new URI("hdfs://192.168.146.132:9000/"), conf, "root");}/*** 读数据方式一*/@Testpublic void testReadData1() throws IllegalArgumentException, IOException{// 1.拿到流FSDataInputStream in = fs.open(new Path("/a.txt"));byte[] buf = new byte[1024];in.read(buf);System.out.println(new String(buf));// 2.关闭资源
        in.close();fs.close();}/*** 读数据方式二*/@Testpublic void testReadData2() throws IllegalArgumentException, IOException{// 1.拿到流FSDataInputStream in = fs.open(new Path("/hdfs-site.xml"));// 2.缓冲流BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));// 3.按行读取String line = null;// 4.读数据while ((line = br.readLine()) != null) {System.out.println(line);}// 5.关闭资源
        br.close();in.close();fs.close();}/*** 读取hdfs中指定偏移量*/@Testpublic void testRandomRead() throws IllegalArgumentException, IOException{// 1.拿到流FSDataInputStream in = fs.open(new Path("/hdfs-site.xml"));// 2.移动文件读取指针到指定位置in.seek(14);byte[] b = new byte[5];// 3.从指针位置开始读取数组b的长度个字节
        in.read(b);System.out.println(new String(b));// 4.关闭资源
        in.close();}/*** 在hdfs中写数据方式一*/@Testpublic void testWriteData() throws IllegalArgumentException, IOException{// 1.输出流FSDataOutputStream out = fs.create(new Path("/windows.txt"), false);// 2.输入流FileInputStream in = new FileInputStream("C:\\Users\\Administrator\\Desktop\\1012.txt");byte[] buf = new byte[1024];int read = 0;while ((read = in.read(buf)) != -1) {out.write(buf, 0, read);}// 3.关闭资源
        in.close();out.close();fs.close();}/*** 在hdfs中写数据方式二*/@Testpublic void testWriteData1() throws IllegalArgumentException, IOException{// 1.创建输出流FSDataOutputStream out = fs.create(new Path("/love"));// 2.写数据out.write("Areyouokmylove".getBytes());// 3.关闭资源
        IOUtils.closeStream(out);fs.close();}
}

转载于:https://www.cnblogs.com/areyouready/p/9795436.html

HDFS基本操作的API相关推荐

  1. 【收藏】HDFS的Java API使用

    Hadoop HDFS的Java API使用 https://blog.csdn.net/u010416101/article/details/88984618

  2. HDFS常用的Api

    HDFS常用的Api: package com.jxd.hdfs;import org.apache.hadoop.conf.Configuration; import org.apache.hado ...

  3. java hadoop api_Hadoop 系列HDFS的Java API( Java API介绍)

    HDFS的Java API Java API介绍 将详细介绍HDFS Java API,一下节再演示更多应用. Java API 官网 如上图所示,Java API页面分为了三部分,左上角是包(Pac ...

  4. hdfs基本操作-python接口

    HDFS操作手册 hdfscli命令行 1 2 3 4 五 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 三十 ...

  5. 《Hadoop MapReduce实战手册》一2.8 使用HDFS的Java API

    本节书摘来异步社区<Hadoop MapReduce实战手册>一书中的第2章,第2.8节,作者: [美]Srinath Perera , Thilina Gunarathne 译者: 杨卓 ...

  6. Hadoop HDFS基本操作(ubuntu16.04 、Hadoop 3.0.3)

    hdfs shell的基本操作以及hdfsWeb查看文件 在安装好hadoop集群并成功的启动了hdfs之后,我们就可以利用hdfs对文件进行操作了,一下是对文件的一些基本操作 特别注意:访问HDFS ...

  7. HDFS基本操作实验

    HDFS基本操作实验 HDFS的基本命令格式 列出当前目录下的文件 在HDFS创建文件夹 级联创建一个文件夹,类似这样一个目录:/mybook/input 上传文件至HDFS 从HDFS上下载文件 查 ...

  8. 大数据处理实验(三)HDFS基本操作实验

    HDFS基本操作实验 1.Hadoop配置环境变量 2.列出当前目录下的文件 3.级联创建一个文件夹,类似这样一个目录:/mybook/input 4.上传文件至HDFS 5.从HDFS上下载文件 6 ...

  9. eclipse远程连接hadoop_Hadoop之HDFS基本操作实验

    点击上方蓝色字关注我们! 基 础 实 验 Hadoop是一款开源的大数据通用处理平台,其提供了分布式存储和分布式离线计算.Hadoop由HDFS.YARN.MapReduce组成. Hadoop分布式 ...

最新文章

  1. swift_028(Swift 的协议)
  2. 英特尔AIDC秀肌肉:展示AI软硬件+生态全景图
  3. 洛谷P4114 Qtree1(树链剖分+线段树)
  4. PHP去除所有的空格
  5. 2020爱站网突然关闭,站长们现在用啥工具分析数据了?
  6. 无损数据压缩算法的历史
  7. 软银没有中国,孙正义失去一切
  8. 我的世界 Unity3D MineCraft 用Unity3D制作类似MineCraft我的世界的游戏 正经梳理一下开发01
  9. 【备读学术论文总览】研究方向论文清单
  10. 今天终于知道了!阿里巴巴 P8、P9 及以上到底是什么水平?
  11. scrapy框架的使用
  12. 【深度之眼cs231n第七期】笔记(二十七)
  13. mysql最大整数类型_MySQL教程19-整数类型
  14. 从朴素贝叶斯的角度推导logistic模型
  15. C1能力认证训练题解析 _ 第二部分 _ Web基础
  16. QQ空间十亿级视频播放技术优化揭密
  17. 1N系列稳压二极管参数
  18. 《隐私计算法律适用规则报告》:隐私计算如何助力数据合规
  19. 结构体变量的内存分配
  20. jaxb 的使用介绍[转载]

热门文章

  1. wordpress 摘要_WordPress社区峰会2012(摘要和图片)
  2. Win+R 常用命令总结
  3. 网络爬虫-爬取顶点小说网指定小说
  4. 浅析 Linux 初始化 init 系统,Systemd
  5. 【论文写作––课程总结】
  6. OpenGL的版本历史和发展
  7. Rxjava——使用RxBus替换EventBus
  8. python实现sqlserver表导出为excel
  9. Android复制内容到剪切板上
  10. 移动端触摸事件(touchstart,touchend,touchmove)的使用!