[b0014] HDFS 常用JAVA 操作实战
目的:
学习用java进行的常用hdfs操作
参考:
环境:
hadoop2.6.4
win7 下的eclipse环境调试已经配置好,参考前面的文章
代码:
1. 创建文件夹
package hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
*
* @author Administrator
* 创建文件夹,如果不存在
*/
public class CreateFolder { public static void main(String[] args) throws IOException {
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
FileSystem fs = FileSystem.get(conf) ;
Path path = new Path("/output"); if(! fs.exists(path)){
fs.mkdirs(path);
}
}
}
以流的方式下载文件
package hdfs; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import org.apache.commons.compress.utils.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
* 功能: 将 hdfs://ssmaster:9000/data/paper.txt下载到Windows下c:\paper.txt
* 调用方式:windows下执行,eclipse中执行
*/ public class Down_Load { public static void main(String[] args) { Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/"); FileSystem fs = null;
Path src = null;
FSDataInputStream in = null;
FileOutputStream out = null; src = new Path("hdfs://ssmaster:9000/data/paper.txt" ); try { fs = FileSystem.get(conf) ;
in = fs.open(src); } catch (IOException e) {
e.printStackTrace();
} try {
out = new FileOutputStream ("c:\\paper.txt"); //等效 c:/paper.txt
} catch (FileNotFoundException e) {
e.printStackTrace();
} try {
IOUtils.copy(in, out);
} catch (IOException e) {
e.printStackTrace();
} }
}
2 上传文件
package hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
*
* @author Administrator
* 上传本地文件
*/
public class UploadFile { public static void main(String[] args) throws IOException {
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
FileSystem fs = FileSystem.get(conf) ;
Path path = new Path("/output");
Path src = new Path("c:/paper.txt"); fs.copyFromLocalFile(false, true, src, path); }
}
3 下载文件
package hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
*
* @author Administrator
* 上传本地文件
*/
public class DownFile { public static void main(String[] args) throws IOException {
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
FileSystem fs = FileSystem.get(conf) ;
Path hdfs = new Path("/output/paper.txt");
Path win7 = new Path("c:/paper_download.txt"); fs.copyToLocalFile(hdfs, win7); }
}
4 删除文件
package hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
*
* @author Administrator
* 删除hdfs文件,如何文件不存在,也运行正常
*/
public class DeleteFile { public static void main(String[] args) throws IOException {
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
FileSystem fs = FileSystem.get(conf) ;
Path hdfs = new Path("/output/paper.txt");
fs.delete(hdfs, true); }
}
5 显示目录信息
package hdfs; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path; /**
*
* @author Administrator
* 显示某个目录下的文件
*/
public class ListFiles { public static void main(String[] args) throws IOException {
Configuration conf =new Configuration();
conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
FileSystem fs = FileSystem.get(conf) ;
Path hdfs = new Path("/"); FileStatus [] files = fs.listStatus(hdfs);
for (FileStatus file:files) { System.out.print(file.getPath().getName());
System.out.print("\t"+ file.isDirectory());
System.out.print("\t"+ file.getOwner());
System.out.print("\n");
} }
}
总结:
HDFS JAVA API 调用初步学会使用。该篇章翻过去,后续用什么再学
后续:
有空将文件系统的常用操作实现,搜索、递归显示、查看文件内容
参考:
[b0014] HDFS 常用JAVA 操作实战的更多相关文章
- hadoop学习(五)----HDFS的java操作
前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...
- HDFS的Java操作
实验环境: Windows 10 Eclipse Mars.2 Release (4.5.2) CentOS 7 Hadoop-2.7.3 先决条件: 1) Windows上各环境变量已配置OK. ...
- properties文件简介及其常用Java操作
一.properties文件简介 java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值&q ...
- HDFS常用API操作 和 HDFS的I/O流操作
前置操作 创建maven工程,修改pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...
- HDFS常用文件操作
put 上传文件 hadoop fs -put wordcount.txt /data/wordcount/ text 查看文件内容 hadoop fs -text /output/wo ...
- hadoop hdfs的java操作
访问hdfs上的文件并写出到输出台 /** * 访问hdfs上的文件并写出到输出台 * @param args */ public static void main(String[] args) { ...
- HDFS常用Java API
- hadoop学习(三)HDFS常用命令以及java操作HDFS
一.HDFS的常用命令 1.查看根目录下的信息:./hadoop dfs -ls 2.查看根目录下的in目录中的内容:./hadoop dfs -ls in或者./hadoop dfs -ls ./i ...
- day03-hdfs的客户端操作\hdfs的java客户端编程
5.hdfs的客户端操作 客户端的理解 hdfs的客户端有多种形式: 1.网页形式 2.命令行形式 3.客户端在哪里运行,没有约束,只要运行客户端的机器能够跟hdfs集群联网 文件的切块大小和存储的副 ...
随机推荐
- golang数据结构和算法之DoublyLinkedList双向链表
双向链表比起单向链表, 多了一个向前指向的指针, 所以在增删查改时,要同时照顾到两个指针的指向. DoublyLinkedList.go package DoublyLinkedList //双向链表 ...
- C++学习七 C++实现add(1)(2)(3)
一.代码实现: class Yoba { public: Yoba(int n) : _n(n) {} Yoba operator() (int n) { return Yoba(_n + n); } ...
- 3.jenkins--- 配置
一 .系统配置 Mange jenkins -------> configure system 并发数量可以调整成10个, Usage(使用): 指允许运行绑定到本机的job ,这个 ...
- day65_10_9vue循环指令与组件
一.v-once v-once指令赋值给标签后,这个标签中的所有变量都不能被更改,只能被渲染一次.之后的改动不能改变该标签中的值: <div id="app"> < ...
- UVA11464 Even Parity 搜索+递推
问题描述 UVA11464 题解 第一直觉爆搜. 发现 \(N \le 15\) ,然后后面每行都可以通过第一行递推出来. 爆搜第一行,递推后面+check \(\mathrm{Code}\) #in ...
- luoguP4331 [BOI2004]Sequence 数字序列
题意 大力猜结论. 首先将所有\(a_i\)变为\(a_i-i\),之后求不严格递增的\(b_i\),显然答案不变,最后\(b_i\)加上\(i\)即可. 考虑两种特殊情况: 1.\(a[]\)是递增 ...
- P2186 小Z的函数栈
有点恶心的模拟(代码写整齐一点不就好了) 以下情况算错: 1.运行中有数的绝对值大于1000000000 2.除以和取模的时候第一个数为0 3.取栈顶元素时栈内元素不够 上代码 #include< ...
- ndt算法学习
NDT算法原理: NDT算法的基本思想是先根据参考数据(reference scan)来构建多维变量的正态分布, 如果变换参数能使得两幅激光数据匹配的很好,那么变换点在参考系中的概率密度将会很大. 因 ...
- set -x 与 set +x
set -x 与 set +x 在liunx脚本中可用set -x就可有详细的日志输出.免的老是要echo了 下面的网上搜来的用法. 用于脚本调试.set是把它下面的命令打印到屏幕set -x 是开启 ...
- 在windows下使用VirtualEnv建立flask项目
1.系统中安装VirtualEnv 在安装完Python后,自带的有pip或easy_install工具,可进行VirtualEnv的安装 pip install virtualenv 2.构造项目, ...