标签:Java,上传,下载
本文实例为大家分享了利用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


猜你喜欢
- 所谓泛型:就是允许在定义类、接口指定类型形参,这个类型形参在将在声明变量、创建对象时确定(即传入实际的类型参数,也可称为类型实参)泛型类或接
- 伤害数字显示HUD游戏中收到伤害掉血,会有飘动的伤害数值;可以使用OnGUI中GUI.Label来实现;可自定义字体,颜色,大小等;如果需要
- 上次介绍了位置服务中的Geocoder,这次就来介绍一下LocationManager。LocationManager系统服务是位置服务的核
- 1、背景我有一堆学生数据,其中湖北省的学生需要排在所有数据的最前面。其余省正序排序,对于同一个省的数据,按照年龄倒序排序。2、分析对于上方的
- 这篇文章主要介绍了spring web.xml指定配置文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 一.理论准备流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行,设备可以是文件、网络、
- 描述输入一行字符串,分别统计出其中英文字母、空格、数字和其它字符的个数输入描述:控制台随机输入一串字符串输出描述:输出字符串中包含的英文字母
- 关于这三个关键字之前可以研究一下原本的一些操作using System;using System.Collections.Generic;u
- 一.抽象类(一)概念 在继承的层次结构中,每个新的子类都使类变得更加明确和具体。如果从一个子类向父类
- 简介说明本文介绍Spring如何控制Bean注入的顺序。首先需要说明的是:在Bean上加@Order(xxx)是无法控制bean注入的顺序的
- 归并排序简单解释:该算法是采用分治法,把数组不断分割,直至成为单个元素,然后比较再合并(合并的过程就是两部分分别从头开始比较,取出最小或最大
- 项目描述:这是一个基于SpringBoot+Vue框架开发的仿小米电子产品售卖商城系统。首先,这是一个前后端分离的项目,代码简洁规范,注释说
- 异常的练习:老师用电脑上课。开始思考上课中出现的问题。比如问题是电脑蓝屏。电脑冒烟。要对问题进行描述,封装成对象。可是当冒烟发生后,出现讲课
- 四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么简单了。在讲解之间我们先看如下一个经典的案
- 1.编写源代码编写源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java。程序
- 加锁和解锁我们来看下ReentrantLock的基本用法ThreadDomain35类public class ThreadDomain35
- 0x01. 概述SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成了,我们可以直接编写SBT启动类,然后一键开启内置的
- 本文实例分析了Java接口默认方法带来的问题。分享给大家供大家参考,具体如下:一 点睛Java 8中,如果一个类实现两个或多个接口,即“变相
- 本文实例讲述了Android SQLite数据库操作方法。分享给大家供大家参考,具体如下:SQLite and AndroidSQLite简
- 在上面的例子中多次使用到了Thread类的join方法。我想大家可能已经猜出来join方法的功能是什么了。对,join方法的功能就是使异步执