使用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 }