使用Spring-hadoop小结
SpringHadoop是通过Spring框架来调用hdfs,跟直接调用hdfs的最大的不同区别是Spring通过依赖注入的方式生成操作hdfs所需要的configuration和filesystem对象,其他所有调用hdfs的api不变
1.在项目的main目录下创建resources文件夹,并将其添加到项目的资源文件中,如图

2.在resources文件夹下创建beans.xml和application.properties文件,分别用来注入对象及管理配置文件

3.添加hadoop和spring-hadoop的依赖
<!--在这里可以定义变量,可以统一管理版本号-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--对hadoop版本进行统一管理-->
<hadoop.version>2.6.0-cdh5.7.0</hadoop.version>
</properties>
<repositories>
<!--添加下载hadoop的仓库-->
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
</repository>
</repositories>
<dependencies>
<!--添加hadoop依赖-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
<!--由于生产环境上已经有这个包,因此不需要打到项目里去-->
<scope>provided</scope>
</dependency>
<!--添加spring-hadoop依赖-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-hadoop</artifactId>
<version>2.5.0.RELEASE</version>
</dependency>
</dependencies>
4.配置beans.xml和application.properties文件中的configuration和filesystem对象
beans.xml文件
<!--将属性配置文件application.properties引用进来,这样在该xml文件就可以使用该配置文件里面的属性-->
<context:property-placeholder location="application.properties"/>
<!--配置hdfs的configurtion-->
<hdp:configuration id="hadoopConfiguration" >
<!--配置namenode的地址-->
fs.defaultFS=${spring.hadoop.fs-uri}
</hdp:configuration>
<hdp:file-system id="fileSystem" configuration-ref="hadoopConfiguration" user="root"/>
application.properties文件
spring.hadoop.fs-uri=hdfs://hadoop01:8020
5.最后是java单元测试代码
package spring;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
/**
* @author ht
* @create 2018-01-30 23:03
* @desc SpringHadoop测试类
**/
public class SpringHadoopApp {
//Spring上下文
private ApplicationContext mContext;
//hdfs文件系统对象
private FileSystem mFileSystem;
/**
* 测试创建文件夹
*/
@Test
public void mkdir() throws IOException {
mFileSystem.mkdirs(new Path("/test"));
}
/**
* 测试从服务器读取文件
*/
@Test
public void text() throws IOException {
FSDataInputStream is = mFileSystem.open(new Path("/test/install.log.syslog"));
IOUtils.copyBytes(is,System.out,1024);
is.close();
}
@Before
public void setUp() {
//获取Spring上下文,spring的依赖注入,是将对象注入到beans中,类似dagger2中的moudle,专门负责生成对象
mContext = new ClassPathXmlApplicationContext("beans.xml");
//通过beans.xml文件获取filesystem对象
mFileSystem = (FileSystem) mContext.getBean("fileSystem");
}
@After
public void tearDown() throws IOException {
mContext = null;
mFileSystem.close();
}
}
使用Spring-hadoop小结的更多相关文章
- spring hadoop 访问hbase入门
1. 环境准备: Maven Eclipse Java Spring 版本 3..2.9 2. Maven pom.xml配置 <!-- Spring hadoop --> <d ...
- HBase之四--(2):spring hadoop 访问hbase
1. 环境准备: Maven Eclipse Java Spring 2. Maven pom.xml配置 <dependency> <groupId>org.apache ...
- hadoop小结
测试小结:1.如果只需要对数据集进行过滤,筛选则只需要编写Mapper类,不需要Reduce类,此时要执行下面一条语句:job.setNumReduceTesk(0);2.如果需要对处理的数据进行分组 ...
- Spring归纳小结(山东数漫江湖)
前言 如果说有什么框架是Java程序员必然会学习.使用到的,那么Spring肯定是其中之一.本篇博客,将根据博主在日常工作中对Spring的使用做一个系统的归纳小结. Spring的一些概念和思想 S ...
- Spring MVC小结
Spring MVC项目搭建 添加依赖 (省略) Spring MVC配置类 @Configuration @EnableWebMvc @ComponentScan("com.sjx.spr ...
- Spring AOP小结
一. AOP介绍 AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP ...
- Spring IoC小结
一. IoC是什么 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ...
- Spring JdbcTemplate小结
提供了JdbcTemplate 来封装数据库jdbc操作细节: 包括: 数据库连接[打开/关闭] ,异常转义 ,SQL执行 ,查询结果的转换 使用模板方式封装 jdbc数据库操作-固定流程的动作,提供 ...
- Spring MVC小结1
由于最近刚开始学Spring MVC,所以来讲一下自己的理解. 首先进行环境配置: 1.jdk 2.myeclipse 3.tomcat 4.maven 配置maven的时候出现了一个小的问题,JAV ...
- Spring使用小结2
之前做过不少spring想过知识点内容的摘录, Spring框架的特点.模块组成.优缺点 spring相关的bean管理想过知识点及依赖注入方式 今天说下近端时间中项目中遇到的相关印象比较深的知识点 ...
随机推荐
- 关于http与https之间的区别
年前的时候进行了一家公司的电话面试两轮,视频面试一轮(已拿到offer),过程中遇到了一个关于http与https的问题,当时回答的并不好,今天将其进行了总结和整理,望读者喜欢: 前言 谷歌在2018 ...
- C#小笔记:单例模式
双重锁定: public class Singleton { private static Singleton instance; private static readonly object syn ...
- laravel服务容器-----深入理解控制反转(IoC)和依赖注入(DI)
首先大家想一想什么是容器,字面意思就是盛放东西的东西,常见的变量,对象属性都是容器,一个容器能够装什么东西,完全在于你对这个容器的定义.有的容器不仅仅只是存文本,变量,而是对象,属性,那么我们通过这种 ...
- Ios App上传步骤
前言:作为一名IOS开发者,把开发出来的App上传到App Store是必须的.下面就来详细介绍下具体流程. 1.打开苹果开发者中心:https://developer.apple.com 打开后点击 ...
- [bzoj]2962序列操作
[bzoj]2962序列操作 标签: 线段树 题目链接 题意 给你一串序列,要你维护三个操作: 1.区间加法 2.区间取相反数 3.区间内任意选k个数相乘的积 题解 第三个操作看起来一脸懵逼啊. 其实 ...
- js到底new了点啥
在最开始学习js的时候,我看书上写着,创建一个数组,一个对象通常使用new,如下: var arr=new Array(),//arr=[] obj=new Object();//obj={} 到了后 ...
- AndroidStudio中导入module(简单版)
1.把要导入成Mudle的项目修改成符合Library的格式 修改该项目中bulid.gradle文件中第一行代码 把 apply plugin: 'com.android.application' ...
- js处理时间戳显示的问题
function getDate(tm){ ); var year = date.getFullYear(); var month = date.getMonth()+1; var day = dat ...
- a标签文字选中后的颜色样式更改
::selection 选择器,选择被用户选取的元素部分.是css3的用法,讲真,我觉得这个东西没必要特地去写.因为选中样式默认的会根据你的背景颜色还有字体color来设置颜色 这是我默认的样式
- PHP 常量dirname(__file__)
PHP 常量dirname(__FILE__)取得当前文件的绝对路径. define('ROOT_PATH', str_replace('includes/2.php', '', str_replac ...