【HDFS API编程】从本地拷贝文件,从本地拷贝大文件,拷贝HDFS文件到本地
接着之前继续API操作的学习
CopyFromLocalFile: 顾名思义,从本地文件拷贝
/**
* 使用Java API操作HDFS文件系统
* 关键点:
* 1)create Configuration
* 2)get FileSystem
* 3)...It's your HDFS API operation.
*/
public class HDFSApp { public static final String HDFS_PATH = "hdfs://hadoop000:8020";
FileSystem fileSystem = null;
Configuration configuration = null; @Before
public void setUp() throws Exception{
System.out.println("setUp-----------");
configuration = new Configuration();
configuration.set("dfs.replication","1"); /*
* 构造一个访问制定HDFS系统的客户端对象
* 第一个参数:HDFS的URI
* 第二个参数:客户端制定的配置参数
* 第三个参数:客户端的身份,说白了就是用户名
*/
fileSystem = FileSystem.get(new URI(HDFS_PATH),configuration,"hadoop");
} /*
* 拷贝本地文件到HDFS文件系统
*/
@Test
public void copyFromLocalFile() throws Exception{
Path src = new Path("/home/hadoop/t.txt");
Path dst = new Path("/hdfsapi/test/");
fileSystem.copyFromLocalFile(src,dst);
}
@After
public void tearDown(){
configuration = null;
fileSystem = null;
System.out.println("----------tearDown------");
}
}
方法怎么用?还是那句 哪里不会Ctrl点哪里。
点进CopyFromLocalFile方法源码得知方法需要两个参数:本地文件的Path,和目标文件的Path,无返回值。
我们运行该测试类后进入终端使用-ls查看/hdfsapi/test目录下包含了刚刚copy进来的t.txt文件,测试成功。
[hadoop@hadoop000 ~]$ hadoop fs -ls /hdfsapi/test
Found 3 items
-rw-r--r-- 3 hadoop supergroup 14 2019-04-19 16:31 /hdfsapi/test/a.txt
-rw-r--r-- 1 hadoop supergroup 28 2019-04-19 16:50 /hdfsapi/test/c.txt
-rw-r--r-- 1 hadoop supergroup 2732 2019-04-20 19:51 /hdfsapi/test/t.txt
如果我们需要从本地拷贝一个大文件,文件越大需要等待的时间自然越长,这么漫长的等待且毫无显示严重影响用户体验。
所以在上传大文件的时候可以添加上传进度条,在fileSystem下有个create方法带有进度条的功能:
/**
* Create an FSDataOutputStream at the indicated Path with write-progress
* reporting.
* Files are overwritten by default.
* @param f the file to create
* @param progress to report progress
*在具有写入进度的指定路径上创建fsdataoutputstream。
*默认情况下会覆盖文件。
*@参数 f 要创建的文件
*@参数 progress 报告进度
*/
public FSDataOutputStream create(Path f, Progressable progress)
throws IOException {
return create(f, true,
getConf().getInt("io.file.buffer.size", 4096),
getDefaultReplication(f),
getDefaultBlockSize(f), progress);
}
运行测试类,能看到打印显示,虽然全是点看起来比较抽象,但是比什么都没有到怀疑死机还是要好点儿。
setUp-----------
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................----------tearDown------ Process finished with exit code 0
........................
我们打开终端-ls查看,上传成功。
[hadoop@hadoop000 software]$ hadoop fs -ls /hdfsapi/test
Found 4 items
-rw-r--r-- 3 hadoop supergroup 14 2019-04-19 16:31 /hdfsapi/test/a.txt
-rw-r--r-- 1 hadoop supergroup 28 2019-04-19 16:50 /hdfsapi/test/c.txt
-rw-r--r-- 1 hadoop supergroup 181367942 2019-04-20 20:10 /hdfsapi/test/jdk.zip
-rw-r--r-- 1 hadoop supergroup 2732 2019-04-20 19:51 /hdfsapi/test/t.txt
能上传那就自然会问:怎么下载?直接上代码,和上面类似就不多介绍了。
/**
* 拷贝HDFS文件到本地:下载
* @throws Exception
*/
@Test
public void copyToLocalFile() throws Exception{
Path src = new Path("/hdfsapi/test/t.txt");
Path dst = new Path("/home/hadoop/app");
fileSystem.copyToLocalFile(src,dst);
}
【HDFS API编程】从本地拷贝文件,从本地拷贝大文件,拷贝HDFS文件到本地的更多相关文章
- 【HDFS API编程】查看HDFS文件内容、创建文件并写入内容、更改文件名
首先,重点重复重复再重复: /** * 使用Java API操作HDFS文件系统 * 关键点: * 1)创建 Configuration * 2)获取 FileSystem * 3)...剩下的就是 ...
- 【HDFS API编程】第一个应用程序的开发-创建文件夹
/** * 使用Java API操作HDFS文件系统 * 关键点: * 1)创建 Configuration * 2)获取 FileSystem * 3)...剩下的就是 HDFS API的操作了*/ ...
- 【HDFS API编程】查看目标文件夹下的所有文件、递归查看目标文件夹下的所有文件
使用hadoop命令:hadoop fs -ls /hdfsapi/test 我们能够查看HDFS文件系统/hdfsapi/test目录下的所有文件信息 那么使用代码怎么写呢?直接先上代码:(这之后 ...
- 【HDFS API编程】jUnit封装-改写创建文件夹
首先:什么是jUnit 回顾: https://www.cnblogs.com/Liuyt-61/p/10374732.html 上一节我们知道: /** * 使用Java API操作HDFS文件系 ...
- HDFS API编程
3.1常用类 3.1.1Configuration Hadoop配置文件的管理类,该类的对象封装了客户端或者服务器的配置(配置集群时,所有的xml文件根节点都是configuration ...
- 【HDFS API编程】开发环境搭建
使用HDFS API的方式来操作HDFS文件系统 IDEA Java 使用Maven来管理项目 先打开IDEA,New Project 创建GAV然后next 默认使用的有idea内置的Maven,可 ...
- 【HDFS API编程】查看文件块信息
现在我们把文件都存在HDFS文件系统之上,现在有一个jdk.zip文件存储在上面,我们想知道这个文件在哪些节点之上?切成了几个块?每个块的大小是怎么样?先上测试类代码: /** * 查看文件块信息 * ...
- 【HDFS API编程】删除文件
所有操作都是以fileSystem为入口进行,我们使用fileSystem下的delete方法进行删除文件操作,删除的时候必须慎重. 直接上代码: /** * 删除文件 * @throws Excep ...
- 【HDFS API编程】图解客户端写文件到HDFS的流程
随机推荐
- PAT乙级考前总结(一)
数学相关的题目 1001 害死人不偿命的(3n+1)猜想 (15 分) 直接一步步计数 1005 继续(3n+1)猜想 (25 分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目 ...
- centos安装实用总结
1.常用软件安装: yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop ...
- PYTHON的前端部分
CSS部分,CSS起到修饰HTML的作用比如颜色,字体,等等. css如何和HTML共同其作用,那么CSS有几种引入HTML的方式 那么当引入了CSS如何让css对应的使相应的HTML标签上起作用,就 ...
- python win32com.client
搜集的一些关于win32com.client操作office的相关用法 #创建 #word w = win32com.client.Dispatch("Word.Application&qu ...
- CF999E Reachability from the Capital来自首都的可达性
题目大意: 有n个节点m条边,边都是单向的,请你添加最少的边使得起点s到其他与其他每一个点之间都能互相到达 这题一看就是一个缩点啊 其实对于原有的m条边相连的一些点,如果之前他们已经形成了强连通分量( ...
- SQL注入学习(一)
注入攻击的本质:web应用程序没有过滤用户输入或过滤不严谨,直接把用户输入的恶意数据当做代码执行 两个条件: 1.用户能够控制输入 2.原本程序要执行的代码,拼接了用户输入的数据 注入类型 SQL注入 ...
- 15. Password auditing (密码审核 12个)
Aircrack是一套用于802.11a / b / g WEP和WPA破解的工具. 一旦收集到足够的加密数据包,它就会实现最有效的破解算法来恢复无线密钥.. 该套件包括十多个分离工具,包括airod ...
- Merging one UE4 project into another.
Merging can be done by right clicking on folder in the content directory in the editor and selecting ...
- PythonStudy——迭代器 iterator
# 迭代器对象: 可以不用依赖索引取值的容器# 可迭代对象:可以通过某种方法得到迭代器对象 # 迭代器优点:可以不用依赖索引取值# 迭代器缺点:只能从前往后依次取值 可迭代对象 # 可迭代对象:有__ ...
- Ntrip协议简介(转)
原文地址:https://blog.csdn.net/sinat_19447667/article/details/67637167 1 什么是Ntrip? CORS(Continuously Ope ...