使用Java API之拷贝本地主机文件至HDFS文件系统

问题描述:

(1)在Xshell中,Windows系统中cat命令不起作用。

解决措施:

(1)cat是Linux系统专有的命令,在Dos里没有cat这个命令。用Windows批处理命令type代替cat。

 1 package com.imooc.bigdata.hadoop.hdfs;
 2 
 3 import org.apache.hadoop.conf.Configuration;
 4 import org.apache.hadoop.fs.FileSystem;
 5 import org.apache.hadoop.fs.Path;
 6 import org.junit.After;
 7 import org.junit.Before;
 8 import org.junit.Test;
 9 
10 import java.net.URI;
11 
12 /**
13  * 使用Java API操作HDFS文件系统
14  *
15  * 因为是放在test下面,所以最好使用单元测试的方式
16  * 在pom中引入的jUnit单元测试的方式
17  * 单元测试有两个方法:(1)在单元测试之前进行;(2)在单元测试之后进行
18  *
19  * 关键点:
20  * 1)创建Configuration
21  * 2)获取FileSystem
22  * 3)剩下的是HDFS API的操作
23  */
24 
25 public class HDFSApp {
26 
27     public static final String HDFS_PATH = "hdfs://hadoop000:8020";
28     //Configuration、FileSystem是每一个方法使用之前必须构建的
29     Configuration configuration = null;
30     FileSystem fileSystem = null;
31 
32     @Before
33     public void setup() throws Exception{
34         System.out.println("-----setup-----");
35         configuration = new Configuration();
36         configuration.set("dfs.replication", "1");
37         /*
38          *构造一个访问指定HDFS系统的客户端对象
39          * 第一个参数:HDFS的URI
40          * 第二个参数:客户端指定的配置参数
41          * 第三个参数:客户的用户名
42          */
43         fileSystem = FileSystem.get(new URI("hdfs://hadoop000:8020"), configuration, "hadoop");
44     }
45 
46     /*
47      * 拷贝本地主机文件至HDFS文件系统
48      */
49     @Test
50     public void copyFromLocalFile() throws Exception{
51         Path src = new Path("/Users/Lenovo/Documents/hello.txt");
52         Path dst = new Path("/hdfsApi/test/");
53         fileSystem.copyFromLocalFile(src, dst);
54     }
55 
56     @After
57     public void tearDown(){
58         System.out.println("-----tearDown-----");
59 
60         //置空
61         configuration = null;
62         fileSystem = null;
63     }
64 }

posted @ 2021-07-02 15:58  酱汁怪兽  阅读(388)  评论(0编辑  收藏  举报