HDFS文件的基本操作
HDFS文件的基本操作:
package wjn; import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.Scanner; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
import org.apache.hadoop.io.IOUtils;
import org.apache.log4j.BasicConfigurator; public class ww { public static Scanner sc = new Scanner(System.in);
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub main9();
} public static void main10() throws IOException{
String p1 = "/user/hadoop/text/text1";
String p2 = "/user/hadoop";
if(mv(p1,p2)){
System.out.println("文件移动成功");
}else{
System.out.println("文件移动失败");
}
} public static void main9() throws IOException{
String hdfspath = "/user/hadoop/text2"; if(deleteFileFromHDFS(hdfspath)){
System.out.println("已删除文件"+hdfspath);
}else{
System.out.println("删除文件失败");
}
} public static void main7() throws IOException{ String hdfspath1 = "/user/hadoop";
boolean forcedelete = false;
if(!ifex(hdfspath1)){
mkdir(hdfspath1);
System.out.println("创建目录"+hdfspath1);
}else{
if(isempty(hdfspath1)||forcedelete){
rmDir(hdfspath1);
System.out.println("删除目录"+hdfspath1);
}else{
System.out.println("目录不为空,不删除");
}
} } public static void main6() throws IOException{ String hdfspath = "/user/hadoop/text2";
String hdfspath1 = "/user/hadoop";
if(ifex(hdfspath)){
deleteFileFromHDFS(hdfspath);
System.out.println("该路径存在,删除路径"+hdfspath);
}else{
if(!ifex(hdfspath1)){
mkdir(hdfspath1);
System.out.println("创建文件夹"+hdfspath1);
}
touchz(hdfspath);
System.out.println("创建路径"+hdfspath);
}
} public static void main5() throws IOException{ String hdfspath = "/user/hadoop";
System.out.println("所有文件信息如下");
lsDir(hdfspath);
} public static void main4() throws IOException{
String hdfspath = "/user/hadoop/text2";
System.out.println("文件信息如下");
ls(hdfspath);
} public static void main3() throws IOException{
String hdfspath = "/user/hadoop/text2";
cat(hdfspath);
System.out.println("读取完成");
} public static void main2() throws IOException{
String localpath = "/home/hadoop/1234.txt";
String hdfspath = "/user/hadoop/text2";
download(hdfspath,localpath);
System.out.println("文件下载成功");
} public static void main1() throws IOException{
String localpath = "/home/hadoop/123.txt";
String hdfspath = "/user/hadoop/text2";
if(ifex(hdfspath)){
System.out.println("文件存在,请选择追加(1)还是覆盖(2)");
int i = sc.nextInt();
if(i==1){
appendFileToHDFS(hdfspath,localpath);
System.out.println("文件追加成功");
}else if(i==2){
deleteFileFromHDFS(hdfspath);
update(localpath,hdfspath);
System.out.println("文件覆盖成功");
}else{
System.out.println("输入有误");
} }else{
update(localpath,hdfspath);
System.out.println("文件不存在,上传成功");
}
} public static void update(String localpath , String hdfspath) throws IOException{ InputStream in = new BufferedInputStream(new FileInputStream(localpath));
FileSystem fileSystem = FileSystem.get(URI.create(hdfspath), new Configuration());
OutputStream out = fileSystem.create(new Path(hdfspath)); IOUtils.copyBytes(in, out, 4096, true);
fileSystem.close(); } //判断hdfs中文件是否存在
public static boolean ifex(String hdfspath) throws IOException{ Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://localhost:9000");
conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");
FileSystem fs = FileSystem.get(conf);
if (fs.exists(new Path(hdfspath))){
fs.close();
return true;
}else{
fs.close();
return false;
}
} //创建目录
public static void mkdir(String hdfspath) throws IOException{ FileSystem fileSystem = FileSystem.get(URI.create(hdfspath), new Configuration());
Path dirPath = new Path(hdfspath);
fileSystem.mkdirs(dirPath);
fileSystem.close();
} //创建文件
public static void touchz(String hdfspath) throws IOException{ FileSystem fileSystem = FileSystem.get(URI.create(hdfspath), new Configuration());
Path dirPath = new Path(hdfspath);
FSDataOutputStream outputStream = fileSystem.create(dirPath);
outputStream.close();
fileSystem.close();
} public static void appendFileToHDFS(String hdfsPath, String localFilePath) throws IOException {
Configuration config = new Configuration();
config.set("dfs.client.block.write.replace-datanode-on-failure.policy", "NEVER");
config.set("dfs.client.block.write.replace-datanode-on-failure.enable", "true"); FileSystem fileSystem = FileSystem.get(URI.create(hdfsPath), config); InputStream in = new BufferedInputStream(new FileInputStream(localFilePath));
FSDataOutputStream out = fileSystem.append(new Path(hdfsPath)); IOUtils.copyBytes(in, out, 4096, true);
fileSystem.close();
} //删除文件
public static boolean deleteFileFromHDFS(String hdfsPath) throws IOException {
FileSystem fileSystem = FileSystem.get(URI.create(hdfsPath), new Configuration());
boolean result = fileSystem.deleteOnExit(new Path(hdfsPath));
fileSystem.close();
return result;
} //删除目录
public static void rmDir(String hdfspath) throws IOException{ FileSystem fileSystem = FileSystem.get(URI.create(hdfspath), new Configuration());
fileSystem.delete(new Path(hdfspath),true);
fileSystem.close();
} //判断目录是否为空
public static boolean isempty(String hdfspath) throws IOException{ FileSystem fileSystem = FileSystem.get(URI.create(hdfspath), new Configuration());
RemoteIterator<LocatedFileStatus> remoteIterator = fileSystem.listFiles(new Path(hdfspath), true);
return !remoteIterator.hasNext();
} public static void download (String hdfsPath, String localPath) throws IOException {
FileSystem fileSystem = FileSystem.get(URI.create(hdfsPath), new Configuration()); FSDataInputStream in = fileSystem.open(new Path(hdfsPath));
OutputStream out = new FileOutputStream(localPath); IOUtils.copyBytes(in, out, 4096, true);
fileSystem.close();
} //根据hdfs路径输出其内容到终端
public static void cat(String hdfspath) throws IOException{ FileSystem fileSystem = FileSystem.get(URI.create(hdfspath), new Configuration()); FSDataInputStream in = fileSystem.open(new Path(hdfspath)); BufferedReader d = new BufferedReader(new InputStreamReader(in));
String line = null;
while((line = d.readLine())!=null){
System.out.println(line);
}
d.close();
in.close();
} //显示hdfs中指定文件的信息
public static void ls(String hdfspath) throws IOException{ FileSystem fileSystem = FileSystem.get(URI.create(hdfspath), new Configuration());
Path path = new Path(hdfspath);
FileStatus[] fileStatus = fileSystem.listStatus(path);
for (FileStatus s : fileStatus){
System.out.println("路径:"+s.getPath().toString());
System.out.println("权限:"+s.getPermission().toString());
System.out.println("大小:"+s.getLen());
Long time = s.getModificationTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = format.format(time);
System.out.println("时间:"+date);
}
} //显示文件夹下所有文件的信息
public static void lsDir(String hdfspath) throws IOException{ FileSystem fileSystem = FileSystem.get(URI.create(hdfspath), new Configuration());
Path dirPath = new Path(hdfspath);
RemoteIterator<LocatedFileStatus> remoteIterator = fileSystem.listFiles(dirPath, true);
while(remoteIterator.hasNext()){ FileStatus s = remoteIterator.next();
System.out.println("路径:"+s.getPath().toString());
System.out.println("权限:"+s.getPermission().toString());
System.out.println("大小:"+s.getLen());
Long time = s.getModificationTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = format.format(time);
System.out.println("时间:"+date);
System.out.println();
}
fileSystem.close();
} //移动文件
public static boolean mv(String path1,String path2) throws IOException{ FileSystem fileSystem = FileSystem.get(URI.create(path1), new Configuration()); Path p1 = new Path(path1);
Path p2 = new Path(path2);
boolean result = fileSystem.rename(p1, p2);
fileSystem.close();
return result;
} }
HDFS文件的基本操作的更多相关文章
- [bigdata] 使用Flume hdfs sink, hdfs文件未关闭的问题
现象: 执行mapreduce任务时失败 通过hadoop fsck -openforwrite命令查看发现有文件没有关闭. [root@com ~]# hadoop fsck -openforwri ...
- HDFS文件和HIVE表的一些操作
1. hadoop fs -ls 可以查看HDFS文件 后面不加目录参数的话,默认当前用户的目录./user/当前用户 $ hadoop fs -ls 16/05/19 10:40:10 WARN ...
- Hadoop之HDFS文件操作常有两种方式(转载)
摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件 命令行 Java API HD ...
- Spark读取HDFS文件,文件格式为GB2312,转换为UTF-8
package iie.udps.example.operator.spark; import scala.Tuple2; import org.apache.hadoop.conf.Configur ...
- spark读hdfs文件实现wordcount并将结果存回hdfs
package iie.udps.example.operator.spark; import scala.Tuple2; import org.apache.spark.SparkConf; imp ...
- HDFS 文件读写过程
HDFS 文件读写过程 HDFS 文件读取剖析 客户端通过调用FileSystem对象的open()来读取希望打开的文件.对于HDFS来说,这个对象是分布式文件系统的一个实例. Distributed ...
- Hadoop HDFS文件常用操作及注意事项
Hadoop HDFS文件常用操作及注意事项 1.Copy a file from the local file system to HDFS The srcFile variable needs t ...
- Hadoop HDFS文件常用操作及注意事项(更新)
1.Copy a file from the local file system to HDFS The srcFile variable needs to contain the full name ...
- hadoop的hdfs文件操作实现上传文件到hdfs
这篇文章主要介绍了使用hadoop的API对HDFS上的文件访问,其中包括上传文件到HDFS上.从HDFS上下载文件和删除HDFS上的文件,需要的朋友可以参考下hdfs文件操作操作示例,包括上传文件到 ...
随机推荐
- C#实现百度ping功能
网站优化必做的事情之一,百度ping,主动推送给百度 文章添加时调用百度推送方法 //保存 protected void btnSubmit_Click(object sender, EventArg ...
- PHP算法[转]
这里是用PHP写的几个基础算法,算法的重要性貌似对于PHP程序员不怎么重要,其实是非常重 要的,经典名句:算法+数据结构=程序.作为一名真正的高级PHP程序员,我认为应该熟悉C,如果你想成为真正的程序 ...
- android&iOS设计分辨率
--- iPhone --- iPhone SE 1136 * 640 2.0875 iPhone 6 1334 * 750 1.778666666666667 iPhone X 2436 * 112 ...
- REVOKE - 删除访问权限
SYNOPSIS REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRI ...
- 天启android5.1系统无法在非1650批次号的rk3288w芯片上启动
天启android5.1系统无法在非1650批次号的rk3288w芯片上启动 挂掉log,说明在rtc初始化后挂掉 [ ) HIGH! ======== [ [ [ 1.420258] [WLAN_R ...
- MySQL --13 主从复制
目录 一.主从复制简介 二.主从复制原理 三.主从复制搭建实战 四.主从复制基本故障处理 五.延时从库 企业案例: 模拟环境 一.主从复制简介 复制是 MySQL 的一项功能,允许服务器将更改从一个实 ...
- Mysql --09 Innodb核心特性——事务
目录 Innodb核心特性--事务 1.什么是事务 2.事务的通俗理解 3.事务ACID特性 4.事务流程举例 5.事务的控制语句 6.事务隐式提交情况 7.事务日志redo基本功能 8.redo数据 ...
- linux time命令的输出中“real”“user”“sys”的真正含义
下面转载的文章详细地介绍了time出来显示的“real”“user”“sys”的真正含义. Linux中time命令,我们经常用来计算某个程序的运行耗时,用户态cpu耗时,系统态cpu耗时. 例如: ...
- 阿里腾讯校招Java面试题总结及答案
阿里校招java面试题汇总 1.HashMap和HashTable的区别,及其实现原理. Hashtable继承自Dictionary类,而HashMap是Java1.2引进的,继承自Abstract ...
- webstorm9.0.3 注册码
William 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA INauvJkeVJBuE5bqLEznccE4tet6tr RiyoMxDK8oDY93t ...