当前位置: 首页 > news >正文

HDFS编程实践-从HDFS中下载指定文件到本地

前言:Hadoop采用java语言开发,提供了Java Api与HDFS进行交互

先要把hadoop的jar包导入到idea中去

为了能编写一个与hdfs交互的java应用程序,一般需要向java工程中添加以下jar包

1)/usr/local/hadoop/share/hadoop/common目录下的所有jar包

2)/usr/local/hadoop/share/hadoop/common/lib下的所有jar包

3)/usr/local/hadoop/share/hadoop/hdfs目录下的所有jar包

4)/usr/local/hadoop/share/hadoop/hdfs/lib中的所有jar包

1、先从本地上传个文件到HDFS中去

命令

hdfs dfs -cp -f file:///usr/local/hadoop/a b

2、在idea中创建项目

HDFSAPI.java


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;//从HDFS中下载指定文件,如果本地文件与要下在文件名相同,则自动对下载的文件重命名
public class HDFSAPI {public static void copyToLocal(Configuration conf , String remoteFilePath, String localFilePath)throws IOException{FileSystem fs = FileSystem.get(conf);Path remotePath = new Path(remoteFilePath);File f = new File(localFilePath);//如果文件名存在,自动重命名(在文件后面加上_0,_1if (f.exists()){System.out.println(localFilePath+"已存在!");Integer i = 0;while (true){f=new File(localFilePath+"_"+i.toString());if (!f.exists()){localFilePath=localFilePath+"_"+i.toString();}i++;System.out.println("将文件重命名"+localFilePath);break;}}//下载到本地Path localPath=new Path(localFilePath);fs.copyToLocalFile(remotePath,localPath);fs.close();}}

Main.java

import org.apache.hadoop.conf.Configuration;public class Main{public static void main(String[] args) {Configuration configuration = new Configuration();configuration.set("fs.default.name","hdfs://localhost:9000");//本地路径String localFilePath="/home/hadoop/text.txt";//hdfs路径String remoteFilePath="/user/hadoop/b";try {HDFSAPI.copyToLocal(configuration,remoteFilePath,localFilePath);System.out.println("下载完成!");}catch (Exception e){e.printStackTrace();}}
}

3、将该项目打包成jar包

File->Project Structure

打包的文件在idea当前项目的out文件夹里面

4、将打包好的jar包移动到hadoop的安装目录下

我这里在hadoop的安装目录下新建了个myapp的文件夹

5、运行

./bin/hadoop jar ./myapp/HDFS_API.jar

http://www.lryc.cn/news/173735.html

相关文章:

  • 安防监控视频AI智能分析网关:人流量统计算法的应用场景汇总
  • 第一百五十二回 自定义组件综合实例:游戏摇杆三
  • 多线程的学习中篇上
  • 非标准化套利
  • 从CNN(卷积神经网络),又名CAM获取热图
  • kafka消费者多线程开发
  • 布局设计和实现:计算器UI【TableLayout、GridLayout】
  • stack与queue的简单封装
  • ChatGPT使用技巧整理
  • 机器学习笔记 - 维度诅咒的数学表达
  • 组合计数训练题解
  • P1095 [NOIP2007 普及组] 守望者的逃离
  • Python函数绘图与高等代数互融实例(八):箱线图|误差棒图|堆积图
  • 联想y7000 y7000p 2018/2019 不插电源 不插充电器, 直接关机 ,电量一直89%/87%/86%,V0005如何解决?
  • stm32与esp8266通信
  • 组合数 2.1 2.2
  • 【数组的中心位置】python实现-附ChatGPT解析
  • 黑马JVM总结(二十三)
  • AI人体行为分析:玩手机/打电话/摔倒/攀爬/扭打检测及TSINGSEE场景解决方案
  • HI_NAS linux 记录
  • 计算机图形学中的几何光学
  • 「UG/NX」BlockUI 选择小平面区域 Select Facet Region
  • 【完全二叉树魔法:顺序结构实现堆的奇象】
  • Maven官方镜像仓库与阿里云云效Maven
  • python系列教程215——列表解析与矩阵
  • fonts什么文件夹可以删除吗?fonts文件夹删除了怎么恢复
  • 【智慧工地源码】智慧工地助力数字建造、智慧建造、安全建造、绿色建造
  • CListCtrl设置只显示单列
  • 冒泡排序与选择排序(最low的两兄弟)
  • MySQL-三大日志