基于Java语言的HDFS文件数据载入(判断文件是否存在、写入文本文件、上传本次文件到HDFS、读取HDFS文件内容)

  • 一、Linux文本文件创建
  • 二、在Eclipse中配置Hadoop
  • 三、编写java程序判定文件是否存在
  • 四、编写java程序将Linux本地文件到HDFS文件系统并部署该程序
  • 五、编写java程序将文本写入HDFS文件
  • 六、编写java程序读取HDFS文本文件内容

这里的操作是在Ubuntu16+Hadoop 2.7.x版本下进行

一、Linux文本文件创建

二、在Eclipse中配置Hadoop

参考http://dblab.xmu.edu.cn/blog/290-2/

三、编写java程序判定文件是否存在

进入Hadoop环境

cd /usr/local/hadoop

启动Hadoop

./sbin/start-dfs.sh

查看是否启动成功

jps

编写java程序判断文件是否存在

 import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;public class HDFSFileIfExist {public static void main(String[] args){try{String fileName = "test";Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://localhost:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");FileSystem fs = FileSystem.get(conf);if(fs.exists(new Path(fileName))){System.out.println("文件存在");}else{System.out.println("文件不存在");}}catch (Exception e){e.printStackTrace();}}}

注意这里要判断的文件名是test,因为在文件夹中还没有这个文件,所以程序运行的结果肯定是判断文件不存在的,如下图:

将String filename=”test”修改为String fileName = "/user/hadoop/input/first,first.txt是之前创建好的文件,是肯定存在的,如下图:

四、编写java程序将Linux本地文件到HDFS文件系统并部署该程序

这里要用到一开始我们创建的myHdfsFile.txt文件,下面编写程序:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class TextFileToHdfs {public static void main(String[] args) {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://localhost:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");String localDir = "/home/zhangjian/下载/myHdfsFile.txt";//本地路径String hdfsDir = "/user/hadoop/input/";//HDFS文件路径try{Path localPath = new Path(localDir);Path hdfsPath = new Path(hdfsDir);FileSystem hdfs = FileSystem.get(conf);hdfs.copyFromLocalFile(localPath,hdfsPath);System.out.println("上传成功");}catch(Exception e){e.printStackTrace();}}
}

运行结果

查看本地文件是否上传成功

./bin/hdfs dfs -ls /user/hadoop/input


查看文件内容

 ./bin/hdfs dfs -cat /user/hadoop/input/myHdfsFile.txt

五、编写java程序将文本写入HDFS文件

编写代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.Path;
public class InputFileToHdfs {public static void main(String[] args) { try {Configuration conf = new Configuration();  conf.set("fs.defaultFS","hdfs://localhost:9000");conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");FileSystem fs = FileSystem.get(conf);byte[] buff = "my name is zhangjian".getBytes(); // 要写入的内容String filename = "/user/hadoop/input/first.txt"; //要写入的文件名FSDataOutputStream os = fs.create(new Path(filename));os.write(buff,0,buff.length);System.out.println("Create:"+ filename);os.close();fs.close();} catch (Exception e) {  e.printStackTrace();  }  }
}

运行结果:

查看的first.txt文件

./bin/hdfs dfs -cat /user/hadoop/input/first.txt

六、编写java程序读取HDFS文本文件内容

编写代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FSDataInputStream;
public class ReadTextFromHdfs {public static void main(String[] args) {try {Configuration conf = new Configuration();conf.set("fs.defaultFS","hdfs://localhost:9000");                      conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");FileSystem fs = FileSystem.get(conf);Path file = new Path("/user/hadoop/input/first.txt"); FSDataInputStream getIt = fs.open(file);BufferedReader d = new BufferedReader(new InputStreamReader(getIt));String content = d.readLine(); //读取文件一行System.out.println(content);d.close(); //关闭文件fs.close(); //关闭hdfs} catch (Exception e) {e.printStackTrace();}}
}

这里读取的文件是first.txt文件里的内容
运行结果:

大数据Hadoop学习记录(2)----基于Java语言的HDFS文件数据载入(判断文件是否存在、写入文本文件、上传本次文件到HDFS、读取HDFS文件内容)相关推荐

  1. java 解析数据包_一种基于Java语言的网络通讯数据包解析方法与流程

    本发明涉及网络通讯领域,特别涉及一种基于Java语言的网络通讯数据包解析方法. 背景技术: 计算机系统和网络的大量普及使用使全球跨入了信息化时代.但是,正由于现代社会中几乎一切都在"计算机化 ...

  2. python气象数据可视化学习记录1——基于ERA5数据画风场和海平面气压填色叠加图

    python气象数据可视化学习记录1--基于ERA5数据画风场和海平面气压填色叠加图 1. 写在前面 2. 图片效果 3. 逐步代码解析 3.1导入库 3.2 读取NC格式数据 3.3 对数据进行加工 ...

  3. java 实现违章_基于JAVA的车辆违章查询数据调用代码实例

    基于JAVA的车辆违章查询数据调用代码实例 代码描述:基于JA V A的车辆违章查询数据调用代码实例 相关平台:聚合数据 import java.io.BufferedReader; import j ...

  4. 基于java web和echarts的数据可视化项目

    EchartDemo 项目介绍 基于java web和echarts的数据可视化项目 主要分析浙江省各市区的gdp和固定资产投资.以及房产数据,数据源浙江省经济社会发展统计,数据经过整理后插入数据库中 ...

  5. Twain的学习记录和基于Qt的相关开源项目详解

    Twain学习记录和基于Qt的开源项目详解 twpp-qml 适用于 C++11 及更高版本的便携式.仅标头 TWAIN 框架. 原项目作者使用Qtwidget基于Twain静态传输一张图片 我基于h ...

  6. 基于Java语言构建区块链(四)—— 交易(UTXO)

    基于Java语言构建区块链(四)-- 交易(UTXO) 2018年03月11日 00:48:01 wangwei_hz 阅读数:909 标签: 区块链比特币 更多 个人分类: 区块链 文章的主要思想和 ...

  7. 基于Java语言构建区块链(五)—— 地址(钱包)

    基于Java语言构建区块链(五)-- 地址(钱包) 2018年03月25日 18:02:06 wangwei_hz 阅读数:1292更多 个人分类: 区块链bitcoin比特币 文章的主要思想和内容均 ...

  8. 基于Java语言的Appium的使用讲义

    第一章 基于 Java 语言的 Appium 的使用 一. Appium 简介 1 什么是 Appium  是一个移动端的自动化测试框架,可用于测试原生应用,移动网页应用和混合型应用, 且是跨平台的 ...

  9. OpenJWeb(v1.9)企业级信息化应用平台开源版发布公告(基于Java语言开发)

              OpenJWeb(v1.9) 企业级信息化应用平台 开源版发布公告 (基于Java语言开发)     软件开发人员的创业伴侣.架构参考 软件外包公司的二次开发利器 Java培训机构 ...

  10. 基于Java语言构建区块链(一)—— 基本原型

    最终内容请以原文为准:https://wangwei.one/posts/df1... 引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产 ...

最新文章

  1. 二叉树路径应用举例(基于非递归后序遍历)
  2. cryptojs支持rsa加密_新特性解读 | 从 wireshark 看 MySQL 8.0 加密连接
  3. EasyDSS高性能流媒体服务器前端重构(五)- webpack + vue-router 开发单页面前端实现按需加载 - 副本...
  4. opencv计算图像亮度调节_OpenCV教程创建Trackbar图像对比度、亮度值调整
  5. a.使用new关键字产生对象会调用构造方法_JAVA创建对象的几种方式
  6. 原生DOM选择器querySelector和querySelectorAll
  7. CCIE考试现在需要面试了
  8. 蚂蚁分类信息系统5.8 解决手机端新闻详情页面图片不自动缩放问题
  9. matlab钢琴音教程,弹琴吧 - 今天聊一聊钢琴扒带及MIDI制作,使用音
  10. 5G赋能新文旅 巡天遥看一千河
  11. iFunk执政官游戏本强势上线,开启畅玩之旅
  12. QT Creator 7 如何同时运行多个客户端窗口(Client)
  13. resnet_unetpp
  14. pygame练习の球球
  15. 临摹 x 科幻 x AI | MixTalk S01-09
  16. 基于 LwIP 协议栈实现 tun2sys-socket,网络游戏加速器(一类)
  17. 安卓应用自动化测试工具
  18. kindle文件如何备份_如何备份您的Kindle高亮和注释
  19. Linux运维学习教程
  20. Cannot load configuration class org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration

热门文章

  1. 浅议磁盘分区——从MBR到GPT
  2. eclipse进度条从后台还原到前台
  3. 西班牙打掉一黑客集团 曾千万台肉鸡
  4. 6.性能之巅 洞悉系统、企业与云计算 --- CPU
  5. 3.RabbitMQ实战 --- 运行和管理Rabbit
  6. 11.无限分类表的数据库设计
  7. 7. 代码中特殊的注释技术——TODO、FIXME和XXX的用处
  8. 21. Element isContentEditable 属性
  9. eruda手机端调试神器
  10. Django 学习第九天——请求与响应