Java程序操作HDFS
1.新建项目
2.导包
解压hadoop-2.7.3.tar.gz
E:\工具\大数据\大数据提升资料\01-软件资料\06-Hadoop\安装包\Java1.8环境
下编译\hadoop-2.7.3\hadoop-2.7.3\share\hadoop\common
E:\工具\大数据\大数据提升资料\01-软件资料\06-Hadoop\安装包\Java1.8环境
下编译\hadoop-2.7.3\hadoop-2.7.3\share\hadoop\common\lib
E:\工具\大数据\大数据提升资料\01-软件资料\06-Hadoop\安装包\Java1.8环境
下编译\hadoop-2.7.3\hadoop-2.7.3\share\hadoop\hdfs
JUNIT 单元测试
/**
* 单元测试
* 1.修饰符必须是public
* 2.不能有参数
* 3.不能有返回值
*
* 运行:选中方法名来运行
* run as --junit test
*/
@Test
public void m1(){
System.out.println("hello");
}
package com.zy.hdfs; import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Iterator; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
import org.junit.Before;
import org.junit.Test; public class test {
public static void main(String[] args) throws Exception {
//上传 //1实例化configuration
Configuration configuration = new Configuration();
//-------------------
//设置一些属性
configuration.set("dfs.replication", "2");//2个副本
configuration.set("dfs.blocksize", "80m");//按照80m切分
//----------------------
//2.获取操作文件系统的客户端实例
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.64.111:9000/"), configuration, "root");
//3.执行上传操作 (src 本地资源 ,dst 上传目的地)
fs.copyFromLocalFile(new Path("C:\\Users\\Administrator\\Desktop\\wc.txt"), new Path("/"));//两次上传一样的会被覆盖
//4.关闭链接
fs.close();
} @Test
public void download() throws Exception{
//下载 Configuration configuration = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://192.168.64.111:9000"), configuration, "root"); fs.copyToLocalFile(false, new Path("/jdk-8u141-linux-x64.tar.gz"), new Path("E://jdk-8u141-linux-x64.tar.gz"), true); fs.close(); }
//----------------
FileSystem fs=null;
@Before//在每次运行junit时先执行
public void before() throws Exception{
System.out.println("11111");
Configuration configuration = new Configuration();
fs = FileSystem.get(new URI("hdfs://192.168.64.111:9000/"), configuration, "root");
}
//---------------
@Test
public void delete() throws Exception{//删除
fs.delete(new Path("/弹性表达式.doc"), true);//为true删除文件夹及里面的内容,false只能删除空的文件夹
fs.close(); }
@Test
public void mkdir() throws Exception{//创建目录
fs.mkdirs(new Path("/a/b/c"));
fs.close(); } @Test
public void list() throws Exception{
FileStatus[] listStatus = fs.listStatus(new Path("/"));//不会递归进去
for (FileStatus fileStatus : listStatus) {
if(fileStatus.isFile()){
System.out.println("文件名:"+fileStatus.getPath().toString()); }else{
System.out.println("目录:"+fileStatus.getPath().toString()); } }
fs.close(); }
@Test
public void list2() throws Exception{//递归遍历出所有文件
RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true);//为true,递归遍历
while(listFiles.hasNext()){
LocatedFileStatus next = listFiles.next();
System.out.println(next.toString());
System.out.println("文件块尺寸"+next.getBlockSize()); } } }
Java程序操作HDFS的更多相关文章
- 大数据-09-Intellij idea 开发java程序操作HDFS
主要摘自 http://dblab.xmu.edu.cn/blog/290-2/ 简介 本指南介绍Hadoop分布式文件系统HDFS,并详细指引读者对HDFS文件系统的操作实践.Hadoop分布式文件 ...
- Java代码操作HDFS测试类
1.Java代码操作HDFS需要用到Jar包和Java类 Jar包: hadoop-common-2.6.0.jar和hadoop-hdfs-2.6.0.jar Java类: java.net.URL ...
- 使用Java API操作HDFS文件系统
使用Junit封装HFDS import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org ...
- Java程序操作数据库SQLserver详解
数据库基本操作:增删改查(CRUD) crud介绍(增.删.改.查操作) CRUD是指在做计算处理时的增加(Create).查询(Retrieve)(重新得到数据).更新(Update)和删除(Del ...
- 大数据之路week07--day01(HDFS学习,Java代码操作HDFS,将HDFS文件内容存入到Mysql)
一.HDFS概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 ...
- Hadoop Java API操作HDFS文件系统(Mac)
1.下载Hadoop的压缩包 tar.gz https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/ 2.关联jar包 在 ...
- 使用Java Api 操作HDFS
如题 我就是一个标题党 就是使用JavaApi操作HDFS,使用的是MAVEN,操作的环境是Linux 首先要配置好Maven环境,我使用的是已经有的仓库,如果你下载的jar包 速度慢,可以改变Ma ...
- java程序向hdfs中追加数据,异常以及解决方案
今天在学习hdfs时,遇到问题,就是在向hdfs中追加数据总是报错,在经过好几个小时的努力之下终于将他搞定 解决方案如下:在hadoop的hdfs-sit.xml中添加一下三项 <propert ...
- Java 简单操作hdfs API
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6632047118376780295/ 启动Hadoop出现问题:datanode的clusterID 和 name ...
随机推荐
- 避坑 | Java8使用并行流(ParallelStream)注意事项
示例分析 /** * 避坑 | Java8使用并行流(ParallelStream)注意事项 * * @author WH.L * @date 2020/12/26 17:14 */ public c ...
- NOIP初赛篇——04计算机软件系统
计算机软件是指计算机系统中的程序及其文档,也是用户与硬件之间的接口,用户主要通过软件与计算机进行交流,软件是计算机的灵魂.没有安装软件的计算机称为"裸机",无法完成任何工作.一般软 ...
- php 二位数组 转一维数组
$result = []; array_map(function ($value) use (&$result) { $result = array_merge($result, array_ ...
- TCP连接的建立与释放(超详细)
前言:在计算机网络协议中,TCP只是其中一个,然而在网络使用中,TCP也是最离不开的协议之一,它的重要性毋庸置疑,最最重要的是,面试的重点就是它啊,呜呜~~,今天我们一起来看下TCP的连接建立与释放, ...
- SDUST数据结构 - chap5 数组与广义表
选择题:
- SDUST数据结构 - chap3 栈和队列
一.判断题: 二.选择题: 三.编程题: 7-1 一元多项式求导: 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 代码: #include<bits/ ...
- service自动发现,yaml文件管理内外部端口访问
service服务发现 [root@k8s-master ~]# vim busybox-5d4f595646-dzjv4.yaml apiVersion: v1 kind: Pod metadata ...
- 【高并发】ReadWriteLock怎么和缓存扯上关系了?!
写在前面 在实际工作中,有一种非常普遍的并发场景:那就是读多写少的场景.在这种场景下,为了优化程序的性能,我们经常使用缓存来提高应用的访问性能.因为缓存非常适合使用在读多写少的场景中.而在并发场景中, ...
- 使用Azure Runbook 发送消息到Azure Storage Queue
客户需要定时发送信息到Azure Storage Queue,所以尝试使用Azure Runbook实现这个需求. 首先新增一个Azure Automation Account的资源. 因为要使用Az ...
- 【pytest】(十二)参数化测试用例中的setup和teardown要怎么写?
还是一篇关于pytest的fixture在实际使用场景的分享. fixture我用来最多的就是写setup跟teardown了,那么现在有一个用例是测试一个列表接口,参数化了不同的状态值传参,来进行测 ...