HDFS API的高级编程

HDFS的API就两个:FileSystem 和Configuration

1、文件的上传和下载

 1 package com.ghgj.hdfs.api;
 2 
 3 import org.apache.hadoop.conf.Configuration;
 4 import org.apache.hadoop.fs.FileSystem;
 5 import org.apache.hadoop.fs.Path;
 6 
 7 public class HDFS_GET_AND_PUT {
 8 
 9     public static void main(String[] args) throws Exception {
10         
11         
12         Configuration conf = new Configuration();
13         conf.set("fs.defaultFS", "hdfs://hadoop1:9000");
14         conf.set("dfs.replication", "2");
15         FileSystem fs = FileSystem.get(conf);
16         
17         
18         /**
19          * 更改操作用户有两种方式:
20          * 
21          * 1、直接设置运行换种的用户名为hadoop
22          * 
23          *     VM arguments ;   -DHADOOP_USER_NAME=hadoop
24          * 
25          * 2、在代码中进行声明
26          * 
27          *  System.setProperty("HADOOP_USER_NAME", "hadoop");
28          */
29         System.setProperty("HADOOP_USER_NAME", "hadoop");
30         
31         // 上传
32         fs.copyFromLocalFile(new Path("c:/sss.txt"), new Path("/a/ggg.txt"));
33         
34         
35         
36         /**
37          * .crc  : 校验文件
38          * 
39          * 每个块的元数据信息都只会记录合法数据的起始偏移量:  qqq.txt  blk_41838 :  0 - 1100byte
40          * 
41          * 如果进行非法的数据追加。最终是能够下载合法数据。
42          * 由于你在数据的中间, 也就是说在 0 -1100 之间的范围进行了数据信息的更改。 造成了采用CRC算法计算出来校验值,和最初存入进HDFS的校验值
43          * 不一致。HDFS就认为当前这个文件被损坏了。
44          */
45         
46         
47         // 下载 
48         fs.copyToLocalFile(new Path("/a/qqq.txt"), new Path("c:/qqq3.txt"));
49         
50         
51         /**
52          * 上传和下载的API的底层封装其实就是 : FileUtil.copy(....)
53          */
54         
55         fs.close();
56     }
57 }
View Code

相关文章:

  • 2021-11-21
  • 2021-05-12
  • 2022-12-23
  • 2021-11-13
  • 2021-11-08
  • 2021-06-28
  • 2021-05-26
  • 2021-07-17
猜你喜欢
  • 2021-09-10
  • 2022-02-25
  • 2021-05-20
  • 2022-02-06
  • 2021-10-28
  • 2022-01-19
  • 2021-12-19
相关资源
相似解决方案