[0014] HDFS 常用JAVA 操作实战

目的:

学习用java进行的常用hdfs操作

参考:

[0002] Hadoop HDFS cmd常用命令练手

环境:

hadoop2.6.4

win7 下的eclipse环境调试已经配置好,参考前面的文章

代码:

1. 创建文件夹

 1 package hdfs;
 2
 3 import java.io.IOException;
 4
 5 import org.apache.hadoop.conf.Configuration;
 6 import org.apache.hadoop.fs.FileSystem;
 7 import org.apache.hadoop.fs.Path;
 8
 9 /**
10  *
11  * @author Administrator
12  *  创建文件夹,如果不存在
13  */
14 public class CreateFolder {
15
16     public static void main(String[] args) throws IOException {
17         Configuration conf =new Configuration();
18         conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
19         FileSystem fs =  FileSystem.get(conf) ;
20         Path path = new Path("/output");
21
22         if(! fs.exists(path)){
23             fs.mkdirs(path);
24         }
25     }
26 }

以流的方式下载文件

 1 package hdfs;
 2
 3 import java.io.FileNotFoundException;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6
 7 import org.apache.commons.compress.utils.IOUtils;
 8 import org.apache.hadoop.conf.Configuration;
 9 import org.apache.hadoop.fs.FSDataInputStream;
10 import org.apache.hadoop.fs.FileSystem;
11 import org.apache.hadoop.fs.Path;
12
13 /**
14  *  功能:      将 hdfs://ssmaster:9000/data/paper.txt下载到Windows下c:\paper.txt
15  *  调用方式:windows下执行,eclipse中执行
16  */
17
18 public class Down_Load {
19
20     public static void main(String[] args) {
21
22     Configuration conf =new Configuration();
23     conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
24
25     FileSystem fs = null;
26     Path src = null;
27     FSDataInputStream in = null;
28     FileOutputStream out = null;
29
30     src = new Path("hdfs://ssmaster:9000/data/paper.txt" );
31
32     try {
33
34       fs = FileSystem.get(conf) ;
35       in = fs.open(src);
36
37        } catch (IOException e) {
38         e.printStackTrace();
39     }
40
41     try {
42         out = new FileOutputStream ("c:\\paper.txt"); //等效  c:/paper.txt
43     } catch (FileNotFoundException e) {
44         e.printStackTrace();
45     }
46
47     try {
48         IOUtils.copy(in, out);
49     } catch (IOException e) {
50         e.printStackTrace();
51     }
52
53 }
54 }

2 上传文件

 1 package hdfs;
 2
 3 import java.io.IOException;
 4
 5 import org.apache.hadoop.conf.Configuration;
 6 import org.apache.hadoop.fs.FileSystem;
 7 import org.apache.hadoop.fs.Path;
 8
 9 /**
10  *
11  * @author Administrator
12  *  上传本地文件
13  */
14 public class UploadFile {
15
16     public static void main(String[] args) throws IOException {
17         Configuration conf =new Configuration();
18         conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
19         FileSystem fs =  FileSystem.get(conf) ;
20         Path path = new Path("/output");
21         Path src  = new Path("c:/paper.txt");
22
23         fs.copyFromLocalFile(false, true, src, path);
24
25     }
26 }

3 下载文件

 1 package hdfs;
 2
 3 import java.io.IOException;
 4
 5 import org.apache.hadoop.conf.Configuration;
 6 import org.apache.hadoop.fs.FileSystem;
 7 import org.apache.hadoop.fs.Path;
 8
 9 /**
10  *
11  * @author Administrator
12  *  上传本地文件
13  */
14 public class DownFile {
15
16     public static void main(String[] args) throws IOException {
17         Configuration conf =new Configuration();
18         conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
19         FileSystem fs =  FileSystem.get(conf) ;
20         Path hdfs = new Path("/output/paper.txt");
21         Path win7  = new Path("c:/paper_download.txt");
22
23         fs.copyToLocalFile(hdfs, win7);
24
25     }
26 }

4 删除文件

 1 package hdfs;
 2
 3 import java.io.IOException;
 4
 5 import org.apache.hadoop.conf.Configuration;
 6 import org.apache.hadoop.fs.FileSystem;
 7 import org.apache.hadoop.fs.Path;
 8
 9 /**
10  *
11  * @author Administrator
12  *  删除hdfs文件,如何文件不存在,也运行正常
13  */
14 public class DeleteFile {
15
16     public static void main(String[] args) throws IOException {
17         Configuration conf =new Configuration();
18         conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
19         FileSystem fs =  FileSystem.get(conf) ;
20         Path hdfs = new Path("/output/paper.txt");
21         fs.delete(hdfs, true);
22
23     }
24 }

5 显示目录信息

 1 package hdfs;
 2
 3 import java.io.IOException;
 4
 5 import org.apache.hadoop.conf.Configuration;
 6 import org.apache.hadoop.fs.FileStatus;
 7 import org.apache.hadoop.fs.FileSystem;
 8 import org.apache.hadoop.fs.Path;
 9
10 /**
11  *
12  * @author Administrator
13  *  显示某个目录下的文件
14  */
15 public class ListFiles {
16
17     public static void main(String[] args) throws IOException {
18         Configuration conf =new Configuration();
19         conf.set("fs.defaultFS", "hdfs://ssmaster:9000/");
20         FileSystem fs =  FileSystem.get(conf) ;
21         Path hdfs = new Path("/");
22
23
24         FileStatus [] files = fs.listStatus(hdfs);
25         for (FileStatus file:files) {
26
27            System.out.print(file.getPath().getName());
28            System.out.print("\t"+ file.isDirectory());
29            System.out.print("\t"+ file.getOwner());
30            System.out.print("\n");
31         }
32
33     }
34 }

总结:

HDFS JAVA API 调用初步学会使用。该篇章翻过去,后续用什么再学

后续:

有空将文件系统的常用操作实现,搜索、递归显示、查看文件内容

参考:

1 hadoop 2.x hdfs api

时间: 2024-11-07 14:54:06

[0014] HDFS 常用JAVA 操作实战的相关文章

HDFS的Java操作

实验环境: Windows 10 Eclipse Mars.2 Release (4.5.2) CentOS 7 Hadoop-2.7.3 先决条件: 1) Windows上各环境变量已配置OK.  如: PATH, HADOOP_HOME; 2) 与Hadoop版本及Windows平台(x86或x64)对应的 hadoop.dll, winutils.exe工具已配置OK. 1.新建Java项目,如图: 2.导入外部JAR包,即HDFS jar包: 3.Java代码: package hdfs

properties文件简介及其常用Java操作

一.properties文件简介 java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"(推荐)或"键:值"的格式,在properties文件中,可以用"#"(推荐)或者"//"来作注释,properties文件在Java编程中用到的地方很多,操作很方便. 现在定义一个databaseInfo.properties文件,如下:#

hadoop hdfs的java操作

访问hdfs上的文件并写出到输出台 /** * 访问hdfs上的文件并写出到输出台 * @param args */ public static void main(String[] args) { try { //将hdfs格式的url转换成系统能够识别的 URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); URL url = new URL("hdfs://hadoop1:9000/hello"); In

Array: 常用Java操作

1. 定义一个Java数组 1 String[] aArray = new String[5]; 2 String[] bArray = {"a","b","c", "d", "e"}; 3 String[] cArray = new String[]{"a","b","c","d","e"}; 第一种是定义

Java操作HDFS开发环境搭建以及HDFS的读写流程

Java操作HDFS开发环境搭建 在之前我们已经介绍了如何在Linux上进行HDFS伪分布式环境的搭建,也介绍了hdfs中一些常用的命令.但是要如何在代码层面进行操作呢?这是本节将要介绍的内容: 1.首先使用IDEA创建一个maven工程: maven默认是不支持cdh的仓库的,需要在pom.xml中配置cdh的仓库,如下: <repositories> <repository> <id>cloudera</id> <url>https://re

hadoop集群配置和在windows系统上运用java操作hdfs

安装 配置 概念 hadoop常用shell命令 使用java操作hadoop 本文介绍hadoop集群配置和在windows系统上运用java操作hdfs 安装 http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.1.1/ sudo apt-get install ssh sudo apt-get install rsync mkdir /usr/local/hadoop tar -zxvf hadoop-3.1.1.tar.gz -C

java 常用Date操作

[java] view plain copy 获取年月日时分秒: [java] view plain copy package com.util; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; public class Test { public void getTimeByDate(){ Date date = new Date(); DateFormat df1 = DateFor

HDFS的Java客户端操作代码(HDFS的查看、创建)

1.HDFS的put上传文件操作的java代码: 1 package Hdfs; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.IOException; 6 import java.net.URI; 7 8 import org.apache.hadoop.conf.Configuration; 9 import org.apache.hadoop.fs.F

hdfs java操作

1.读出hadoop目录下的hello文件: 方案一(只能读不能写): import java.net.MalformedURLException;import java.net.URL;import java.io.*; import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;import org.apache.hadoop.io.IOUtils; public class App1 { public static final String