经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » Hadoop » 查看文章
HDFS常用API(1)
来源:cnblogs  作者:给你一个公主抱  时间:2019/3/25 9:11:05  对本文有异议

一、HDFS集群API所需要jar包的maven配置信息

  1. <dependency>
  2. <groupId>org.apache.hadoop</groupId>
  3. <artifactId>hadoop-common</artifactId>
  4. <version>2.8.4</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.hadoop</groupId>
  8. <artifactId>hadoop-hdfs</artifactId>
  9. <version>2.8.4</version>
  10. </dependency>

二、从HDFS下载数据文件/上传文件到HDFS文件系统

  思路:1.获取配置信息

     2.设置配置信息(块大小、副本数)

     3.构造客户端

     4.下载数据文件/上传数据文件

     5.关闭资源

  (1)下载文件

  1. /**
  2. * @author: PrincessHug
  3. * @date: 2019/3/18, 16:10
  4. * @Blog: https://www.cnblogs.com/HelloBigTable/
  5. */
  6. public class HdfsClientDemo02 {
  7. public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
  8. //配置信息对象
  9. Configuration conf = new Configuration();
  10. //设置具体配置信息
  11. conf.set("dfs.replication","2");
  12. //构造客户端
  13. FileSystem fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"), conf, "root");
  14.  
  15. //下载数据到本地
  16. fs.copyToLocalFile(new Path("/words1.txt"),new Path("f://words1.txt"));
  17. //关闭资源
  18. fs.close();
  19. System.out.println("下载完成");
  20. }
  21. }

  (2)上传文件

  1. /**
  2. * @author: PrincessHug
  3. * @date: 2019/3/18, 11:53
  4. * @Blog: https://www.cnblogs.com/HelloBigTable/
  5. */
  6. public class HdfsClientDemo01 {
  7. public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
  8. //配置信息
  9. Configuration conf = new Configuration();
  10. //配置块大小和副本数
  11. conf.set("dfs.blocksize","64m");
  12. conf.set("dfs.replication","2");
  13. //构造客户端
  14. FileSystem fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"), conf, "root");
  15. //上传文件到hdfs客户端
  16. fs.copyFromLocalFile(new Path("/root/love.tsv"),new Path("/love1.tsv"));
  17. //关闭资源
  18. fs.close();
  19. System.out.println("上传成功!");
  20. }
  21. }

 

三、对HDFS系统进行操作的API

  1. /**
  2. * @author: PrincessHug
  3. * @date: 2019/3/18, 16:16
  4. * @Blog: https://www.cnblogs.com/HelloBigTable/
  5. */
  6. public class HdfsClientDemo {
  7.  
  8. private static FileSystem fs = null;
  9.  
  10. static {
  11. Configuration conf = new Configuration();
  12. conf.set("dfs.blocksize","64m");
  13. conf.set("dfs.replication","3");
  14. try {
  15. fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"),conf,"root");
  16. } catch (IOException e) {
  17. e.printStackTrace();
  18. } catch (InterruptedException e) {
  19. e.printStackTrace();
  20. } catch (URISyntaxException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24.  
  25. /**
  26. * 创建文件夹方法
  27. * @throws IOException
  28. */
  29. public void mkDir(String path) throws IOException {
  30. fs.mkdirs(new Path(path));
  31. fs.close();
  32. }
  33.  
  34. /**
  35. * 重命名或移动文件
  36. * @param path1
  37. * @param path2
  38. * @throws IOException
  39. */
  40. public void hdfsRename(String path1,String path2) throws IOException {
  41. fs.rename(new Path(path1),new Path(path2));
  42. fs.close();
  43. }
  44.  
  45. /**
  46. * 删除文件或文件夹
  47. * @param path 路径
  48. * @throws IOException
  49. */
  50. public void delete(String path) throws IOException {
  51. fs.delete(new Path(path),true);
  52. fs.close();
  53. }
  54.  
  55. /**
  56. * 列出hdfs指定的目录信息
  57. * @param path
  58. * @throws IOException
  59. */
  60. public void list(String path) throws IOException {
  61. RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(new Path(path), true);
  62. while (iterator.hasNext()){
  63. //拿数据
  64. LocatedFileStatus status = iterator.next();
  65. System.out.println("文件的路径为:" + status.getPath());
  66. System.out.println("文件的块大小为:" + status.getBlockSize());
  67. System.out.println("文件的块信息为:" + Arrays.toString(status.getBlockLocations()));
  68. System.out.println("文件的长度为:" + status.getLen());
  69. System.out.println("文件的副本数为:" + status.getReplication());
  70. System.out.println("=====================================================");
  71. }
  72. fs.close();
  73. }
  74.  
  75. /**
  76. * 判断时文件还是文件夹
  77. * @param parh
  78. * @throws IOException
  79. */
  80. public void judgeFileOrDir(String parh) throws IOException {
  81. //展示状态信息
  82. FileStatus[] fileStatuses = fs.listStatus(new Path(parh));
  83. //遍历所有文件
  84. for (FileStatus fs:fileStatuses){
  85. if (fs.isFile()){
  86. System.out.println("文件-----f------" + fs.getPath().getName());
  87. }else {
  88. System.out.println("文件-----d------" + fs.getPath().getName());
  89. }
  90. }
  91. }
  92. }
  93.  
  94. public class HdfsDriver {
  95. public static void main(String[] args) {
  96. HdfsClientDemo hcd = new HdfsClientDemo();
  97. try {
  98. //hcd.mkDir("/wyh");
  99. hcd.judgeFileOrDir("/");
  100. hcd.list("/");
  101. } catch (IOException e) {
  102. e.printStackTrace();
  103. }
  104. }
  105. }

  

四、

 

原文链接:http://www.cnblogs.com/HelloBigTable/p/10581676.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号