HDFS操作
HDFS操作
1.shell
1.1 创建目录
hadoop fs -mkdir 目录名(其中/为根目录)
1.2 遍历目录
hadoop fs -ls 目录名
1.3 删除目录
hadoop fs -rmr 目录名
1.4 修改目录
hadoop fs -mv 原目录 目标目录
1.5 上传文件
hadoop fs -put 文件原路径 文件HDFS路径
1.6 查看文件
hadoop fs -cat 文件名(需包含目录)
1.7 删除文件
hadoop fs -rmr 文件名
1.8 修改文件
hadoop fs -mv 源文件 目标文件 2.javaAPI
2.1 FileSystem类
1.1 写文件————create方法
1.2 读取文件————open方法
1.3 删除文件————delete方法
1.4 创建目录————mkdir方法
1.5 列出目录内容————listStatus方法
1.6 显示目录和文件元数据信息————getFileStatus方法
2.2 使用步骤
2.1 导入相关jar
2.2 得到Configuration对象
2.3 得到hdfs的URI对象
2.4 得到FileSystem对象
2.5 调用filesystem的相关方法 示例:
package testHadoop; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI; 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.Path;
import org.apache.hadoop.io.IOUtils; public class testJavaAPI { public static void main(String[] args) throws Exception{
String url = "hdfs://hadoop:9000";
Configuration conf = new Configuration();
URI uri = new URI(url);
FileSystem fs = FileSystem.get(uri, conf); listPath(url, fs,"/");//遍历目录 fs.mkdirs(new Path("/input/test"));//创建目录
System.out.println("创建文件夹成功!");
listPath(url, fs,"/input/test"); fs.delete(new Path("/input/test"));//删除目录
listPath(url, fs, "/input"); //创建文件
FSDataOutputStream out = fs.create(new Path("/input/test.ini"));
out.writeUTF("This is first test data!");
out.flush();
out.close();
System.out.println("创建文件成功!");
listPath(url, fs, "/input"); //读取文件
FSDataInputStream in = fs.open(new Path("/input/test.ini"));
IOUtils.copyBytes(in, System.out, 1024);
IOUtils.closeStream(in);
System.out.println("读取文件成功!"); //删除文件
fs.delete(new Path("/input/test.ini"));
System.out.println("删除文件成功!");
listPath(url, fs, "/input"); //本地文件上传到服务器
File file = new File("d:/data.txt");
FileInputStream in_local = new FileInputStream(file);
FSDataOutputStream out_local = fs.create(new Path("/input/data.ini"));
int i;
while ((i=in_local.read())!= -1){
out_local.write(i);
}
out_local.flush();
in_local.close();
out_local.close();
listPath(url, fs, "/input"); } private static void listPath(String url, FileSystem fs ,String path) throws FileNotFoundException, IOException {
FileStatus[] status = fs.listStatus(new Path(path));
for(FileStatus s : status){
String isDir = s.isDir()?"目录":"文件";
System.out.println(s.getPath().getName() + " " + isDir);
}
System.out.println("遍历文件夹成功");
} }
HDFS操作的更多相关文章
- python基础操作以及hdfs操作
目录 前言 基础操作 hdfs操作 总结 一.前言 作为一个全栈工程师,必须要熟练掌握各种语言...HelloWorld.最近就被"逼着"走向了python开发之路, ...
- Azkaban实战,Command类型单一job示例,任务中执行外部shell脚本,Command类型多job工作flow,HDFS操作任务,MapReduce任务,HIVE任务
本文转载自:https://blog.csdn.net/tototuzuoquan/article/details/73251616 1.Azkaban实战 Azkaba内置的任务类型支持comman ...
- 假期学习【三】HDFS操作及spark的安装/使用
1.安装 Hadoop 和 Spark 进入 Linux 系统,参照本教程官网“实验指南”栏目的“Hadoop 的安装和使用”,完 成 Hadoop 伪分布式模式的安装.完成 Hadoop 的安装以后 ...
- HDFS追本溯源:HDFS操作的逻辑流程与源码解析
本文主要介绍5个典型的HDFS流程,这些流程充分体现了HDFS实体间IPC接口和stream接口之间的配合. 1. Client和NN Client到NN有大量的元数据操作,比如修改文件名,在给定目录 ...
- Tutorial 02_熟悉常用的HDFS操作
Shell命令实现: (1)向HDFS 中上传任意文本文件,如果指定的文件在HDFS 中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件: (2) 从HDFS 中下载指定文件,如果本地文 ...
- 熟悉常用的HDFS操作
编程实现以下指定功能,并利用Hadoop提供的Shell命令完成相同任务: 在本地Linux文件系统的“/home/hadoop/”目录下创建一个文件txt,里面可以随意输入一些单词. 在本地查看文件 ...
- 第三章 熟悉常用的HDFS操作
一.Hadoop提供的Shell命令完成相同任务: 1.在本地Linux文件系统的“/home/hadoop/”目录下创建一个文件txt,里面可以随意输入一些单词. mkdir hadoop 在本地查 ...
- HDFS操作及小文件合并
小文件合并是针对文件上传到HDFS之前 这些文件夹里面都是小文件 参考代码 package com.gong.hadoop2; import java.io.IOException; import j ...
- 第4章 HDFS操作
目录 4.1 命令行操作 4.2 Java API操作 4.2.1 创建Java工程 4.2.2 读取数据 4.2.3 创建目录 4.2.4 创建文件 4.2.5 删除文件 4.2.6 遍历文件和目录 ...
随机推荐
- JavaScript 秘密花园 学习心得
目的 记录一下学习心得,便于以后复习,内容是比较基础的...但是很多内容我还是不知道... 对象 对象使用和属性 1.JavaScript 中所有变量都可以当作对象使用,除了两个例外 null和dun ...
- 海拔高度图*.dem文件的读取—vtkDEMReader
vtkDEMReader reads digital elevation files and creates image data. Digital elevation files are produ ...
- 执行mvn 报错 source-1.5 中不支持 diamond运算符
编译版本出现了问题 <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> < ...
- 关于PHP的引用赋值
应用赋值,可以改变之前的变量的值! 可以间接的做到,在变量未申明的时候!就可以获取它的值!
- Azure上的那些IP
相信第一次接触Azure的读者都会碰到这样一个问题,就是Azure的IP地址,笔者第一次接触Azure也是被搞懵逼了,一会儿VIP,不知道的还以为是会员的意思呢,一会儿又是DIP,后来又来了个PIP, ...
- Best Time to Buy and Sell Stock1,2,3,4
找到最低值和最高值 int maxProfit(vector<int>& prices) { ); ; ]; ;i<prices.size();i++) { profit=m ...
- 获取Unity3D虚拟摄像机的图像
最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents ------------------------------------------ ...
- Java控制Appium server start/stop
相信很多人都会遇到这种场景,在进行appium自动化的时候用Windows OS,不好实现后台运行,每次启动Appium server: 使用Appium GUI版手动点击 就是在cmd line 启 ...
- selenium page object & Page Factory
package demo; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa ...
- Application package 'AndroidManifest.xml' must have a minimum of 2 segments.
看了源码就是packagename里面必须包含一个. 源码在: ./sdk/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/id ...