Java实现HDFS文件上传下载
作者:绝域时空 时间:2022-05-18 15:08:06
本文实例为大家分享了利用Java实现HDFS文件上传下载的具体代码,供大家参考,具体内容如下
1、pom.xml配置
<!--配置-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<hadoop.version>3.1.3</hadoop.version>
</properties>
<!--依赖库-->
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>${hadoop.version}</version>
</dependency>
</dependencies>
2、创建与删除
//导包
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
public static void main( String[] args ){
//初始化hadoop文件系统的configration对象
Configuration conf = new Configuration();
//将hadoop的configration信息传入
conf.set("fs.defaultFS","hdfs://192.168.50.102:9000");
//初始化Hadoop文件系统的句柄
FileSystem fs=null;
try {
//配置Hadoop的文件句柄信息
fs=FileSystem.get(conf);
//定义Hadoop的文件路径
final String PATH="/test/kb16/hadoop/ratings.csv";
//初始化Hadoop的路径信息
Path path = new Path(PATH);
//如果文件路径存在就删除
if (fs.exists(path)) {
System.out.println("DELETE "+fs.delete(path, true));
}else{
//如果文件路径不存在就创建
System.out.println("CREATE "+fs.create(path));
}
} catch (IOException e) {
e.printStackTrace();
}finally {
//结束的时候,句柄还没有释放就进行释放
if (fs!=null) {
try {
fs.close() ;
}catch (IOException e) {
e.printStackTrace();
}
}
}
}
3、文件上传
//导包
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.File;
import java.io.IOException;
public static void main(String[] args) {
//定义本地上传文件路径
final String formPath="E:\\ratings.csv";
//本地文件不存在就报错,并强制让程序终止
if (!new File(formPath).exists()) {
System.out.println(formPath +"doesn't exits");
return;
}
//初始化hadoop文件系统的configration对象
Configuration conf = new Configuration();
//将hadoop的configration信息传入
conf.set("fs.defaultFS","hdfs://192.168.50.102:9000");
//初始化Hadoop文件系统的句柄
FileSystem fs=null;
try {
//将config信息传入
fs=FileSystem.get(conf);
//定义上传到HDFS的路径
final String toPath="/test/kb16/hive";
//初始化路径
Path to =new Path(toPath);
//如果文件路径存在不执行,如果文件路径不存在就尝试创建,如果创建失败就跳过
if (!fs.exists(to)&& !fs.mkdirs(to)) {
System.out.println(toPath +"doesn't exit and can't be created");
return;
}
//初始化上传文件路径
Path from=new Path(formPath);
//利用方法将本地文件复制到HDFS中
fs.copyFromLocalFile(from, to);
System.out.println("succeed in copying from "+formPath+" to "+toPath);
} catch (IOException e) {
e.printStackTrace();
System.out.println("FAILURE");
}finally{
//如果结束Hadoop文件系统句柄没有关闭,利用方法进行句柄释放
if (null!=fs) {
try {
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
4、文件下载
//导包
import com.google.inject.internal.cglib.core.$LocalVariablesSorter;
import com.google.inject.internal.cglib.proxy.$Factory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.File;
import java.io.IOException;
public class Download {
public static void main(String[] args) {
//定义文件下载路径
final String toPath = "C:\\Users\\Jialin\\Desktop";
//获取路径
File to = new File(toPath);
//如果路存在或者文件路径不存在但是创建成功就不执行if方法
if (!to.exists()&&!to.mkdirs()) {
System.err.println(toPath + "doesn't exist and can't be created");
return;
}
//初始化hadoop文件系统的configration对象
Configuration config = new Configuration();
//将hadoop的configration信息传入
config.set("fs.defaultFS", "hdfs://192.168.50.102:9000");
//初始化Hadoop文件系统的句柄
FileSystem fs = null;
try {
//将config信息传入
fs = FileSystem.get(config);
//定义下载文件路径
final String fromPath = "/test/kb16/hive/ratings.csv";
//获取路径信息
Path from = new Path(fromPath);
//如果指定下载文件不存在就退出
if (!fs.exists(from)) {
System.err.println(toPath + "doesn't exist ");
return;
}
//获取文件下载路径信息
Path _to = new Path(toPath);
//利用方法将Hadoop文件下载到本地
fs.copyToLocalFile(from,_to);
System.out.println("succeed in downloading from "+fromPath+" to"+toPath);
} catch (IOException e) {
e.printStackTrace();
System.out.println("FAILURE");
} finally {
//如果结束Hadoop文件系统句柄没有关闭,利用方法进行句柄释放
if (null != fs)
try {
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
来源:https://blog.csdn.net/m0_43405302/article/details/122788755
标签:Java,上传,下载
0
投稿
猜你喜欢
springboot bootcdn使用示例详解
2022-01-14 21:56:46
java private关键字用法实例
2022-01-16 10:08:06
Android之Spinner用法详解
2022-10-05 00:57:17
Java 非阻塞I/O使用方法
2022-01-01 22:54:57
Cors实现java后端完全跨域实例
2022-01-04 15:03:33
JAVA 内存溢出案例汇总
2022-02-16 08:49:22
java中如何判断JSONObject是否存在某个Key
2022-06-10 15:07:24
MFC程序设计常用技巧汇总
2023-11-02 20:37:12
微服务间调用Retrofit在Spring Cloud Alibaba中的使用
2022-09-29 23:13:42
教你如何监控 Java 线程池运行状态的操作(必看)
2023-02-09 04:34:13
JAVA实现KMP算法理论和示例代码
2021-08-06 07:13:44
c# 委托的常见用法
2021-08-11 13:44:05
SpringBoot中实现接收文件和对象
2022-02-08 10:16:53
springboot 跨域配置类及跨域请求配置
2023-01-31 14:27:19
使用SpringBoot获取resources文件路径
2022-10-12 15:29:56
c#使用Socket发送HTTP/HTTPS请求的实现代码
2023-10-12 07:10:00
Android studio 3.5.2安装图文教程详解
2022-06-27 19:15:46
Java中实现获取路径的方法汇总
2022-12-19 08:10:54
浅析Java异常处理中断言的使用
2023-07-05 23:50:03
C#虚函数用法实例分析
2022-04-03 15:03:42