Java怎么实现HDFS文件上传下载
作者:RiverSoul
时间:2023-04-26
来源:互联网
浏览:0
1、pom.xml配置UTF-81.81.83.1.3org.apache.hadoophadoop-common${hadoop.version}org.apache.hadoophadoop-mapreduce-client-core${hadoop.version}2、创建与删除//导包importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.
1、pom.xml配置
UTF-8 1.8 1.8 3.1.3 org.apache.hadoop hadoop-common ${hadoop.version} org.apache.hadoop hadoop-mapreduce-client-core ${hadoop.version}
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();
}
}
}
}
作者最新文章
微软推出Project Zenith:面向Windows 11开发者的AI硬件加速方案
2026-09-08 18:15
打破流量垄断,让平台经济释放普惠红利
2026-09-08 18:07
Arm AGI CPU详解:136核Neoverse V3,3nm双芯粒架构与AI数据中心部署
2026-09-08 17:18
Windows安装Docker教程:启用WSL2并运行第一个容器验证
2026-09-04 09:26
PDF转Word操作指南:在线与本地转换方法及格式检查
2026-09-03 16:03
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















