`
dalan_123
  • 浏览: 87055 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
阅读更多
一、测试
public class MrBatchApp {
    // Log
    private static final Log log = LogFactory.getLog(MrBatchApp.class);
    //
    public static void main(String[] args) throws      JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {
    System.out.println("TEST");
    // 加载对应的xml配置文件
    AbstractApplicationContext context = new ClassPathXmlApplicationContext("classpath:/META-INF/spring/*-context.xml");
        log.info("Batch Tweet Hashtag MR Job Running");
        // 关闭"钩子" 为了方便在适当的时候关闭 spring ioc
        // (在非web环境下,关闭spring ioc需要手动完成)
        context.registerShutdownHook();
        // job 发射器
        // JobLaucher是一个简化的job的控制接口;基于运行时不同的标识
        // 该接口并不能确保执行job是同步还是异步
        JobLauncher jobLauncher = context.getBean(JobLauncher.class);
        // job
        Job job = context.getBean(Job.class);
        // 运行job
        jobLauncher.run(job, new JobParameters());

    }
}
二、xml配置文件
(1)、common 配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
// job 仓库
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"/>
// 事务
<bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager"/>
// job launcher
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher" p:jobRepository-ref="jobRepository"/>
</beans>
(2)、特殊配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:batch="http://www.springframework.org/schema/batch"
xmlns:hdp="http://www.springframework.org/schema/hadoop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/hadoop http://www.springframework.org/schema/hadoop/spring-hadoop.xsd">
    // 引入common 配置
    <import resource="batch-common-context.xml"/>
    // hdfs uri/分析目录/统计目录/分析源文件
    <context:property-placeholder location="hadoop.properties"/>

<context:component-scan base-package="org.springframework.samples.hadoop.mapreduce" />
// 指定hdfs
<hdp:configuration>
        fs.defaultFS=${hd.fs}
</hdp:configuration>
    // 设定hdp 脚本 用于创建localSourceFile、inputDir、outputDir
    <hdp:script id="setupScript" location="file-prep.groovy" run-at-startup="true">
        <hdp:property name="localSourceFile" value="${localSourceFile}"/>
        <hdp:property name="inputDir" value="${tweets.input.path}"/>
        <hdp:property name="outputDir" value="${tweets.output.path}"/>
    </hdp:script>
    // 指定mapreduce step to step执行
    <!-- required since Hadoop Job is a class not an interface and we need to use a Job with step scope to access #{jobParameters['...']} -->
    <bean class="org.springframework.batch.core.scope.StepScope">
        <property name="proxyTargetClass" value="true"/>
    </bean>
    // 设置job steps
    <job id="job" xmlns="http://www.springframework.org/schema/batch">
        <step id="hashtagcount" next="result-step">
            <tasklet ref="hashtagcount-tasklet" />
        </step>
        <step id="result-step">
            <tasklet ref="results"/>
        </step>
    </job>
   
    <hdp:job-tasklet id="hashtagcount-tasklet" job-ref="hashtagcountJob" scope="step"/>

    <hdp:job id="hashtagcountJob"
        input-path="${tweets.input.path}"
        output-path="${tweets.output.path}"
        mapper="org.springframework.samples.hadoop.mapreduce.HashtagCount$TokenizerMapper"
        reducer="org.springframework.samples.hadoop.mapreduce.HashtagCount$LongSumReducer"
        scope="step" />
    // 指定统计结果 输出
    <hdp:script-tasklet id="results" scope="step">
        <hdp:script location="classpath:results.groovy">
            <hdp:property name="outputDir" value="${tweets.output.path}"/>
        </hdp:script>
    </hdp:script-tasklet>

</beans>
三、groovy脚本
// 判断分析源文件所在的目录是否存在 不存在创建 并将源文件复制到指定目录下
// 同时修改该文件夹的权限
if (!fsh.test(inputDir)) {
   fsh.mkdir(inputDir);
   fsh.copyFromLocal(localSourceFile, inputDir);
   fsh.chmod(700, inputDir)
}
// 判断统计结果目录是否存在 存在则删除
if (fsh.test(outputDir)) {
   fsh.rmr(outputDir)
}
-----------------------------------------------------------------------
// 输出分析统计结果的内容
println "RESULTS from " + outputDir
old = new File('results.txt')
if( old.exists() ) {
    old.delete()
}
fsh.get(outputDir + '/part-r-*', 'results.txt');
String fileContents = new File('results.txt').text
println fileContents
以上即可完全通过xml完成mapreduce的batch处理
分享到:
评论

相关推荐

    spring data hadoop reference

    Spring Data Hadoop 是一个扩展框架,它为 Spring 框架、Spring Batch 和 Spring Integration 提供了扩展支持,以便构建可管理且健壮的数据处理管道。此框架旨在简化在 Hadoop 生态系统中的开发工作,提供了一种更加...

    基于Spring Batch的大数据量并行处理

    Hadoop主要用于处理PB级别的大数据集,而Spring Batch则在GB到TB级别的数据处理上表现更为出色。 - **架构设计**:Spring Batch的设计更加轻量级,易于嵌入现有的应用程序中。而Hadoop则是一套完整的分布式计算框架...

    spring-hadoop-getting-started:Spring for Apache Hadoop 入门示例

    4. 高度集成:Spring Hadoop与其他Spring模块(如Spring Batch、Spring Data等)无缝集成,可实现更复杂的分布式数据处理方案。 总结,Spring for Apache Hadoop 是Java开发者在Hadoop世界中的一把利器,它通过...

    spring-batch-2.2.0.RELEASE-no-dependencies

    Spring Batch 能很好地与 Spring 框架的其他模块(如 Spring Data、Spring Integration)以及外部系统(如 JDBC、JMS、Hadoop)集成,实现数据处理的无缝对接。 **七、最佳实践** 在使用 Spring Batch 时,应遵循...

    spring recipe 英文版

    对于需要处理大量数据的任务,Spring Batch 提供了一种可靠的批量处理解决方案。 #### 13. NoSQL and Big Data 随着大数据时代的到来,NoSQL 数据库和 Hadoop 等大数据处理技术变得越来越重要。Spring 也提供了...

    HadoopSpringBatch

    由Spring Batch支持的Hadoop工作流引擎。 特征 Pig / Hive / Spark脚本或通用Shell命令的工作流程。 参数管理。 顺序或并行脚本执行。 轻松设置Java / Python UDF。 要求 要构建项目,您将需要安装以下软件: ...

    Spring Data:Spring Data Modern Data Access for Enterprise Java

    Part I. Background 1. The Spring Data Project ...13. Creating Big Data Pipelines with Spring Batch and Spring Integration Part VI. Data Grids 14. GemFire: A Distributed Data Grid Bibliography Index

    Spring Data实战

    Spring Data项目就是一种简化Java应用构建的数据访问技术,它可以帮助开发人员高效地使用最新的数据处理和管理工具,同时还能够以最新的方式使用传统的数据库。  《Spring Data实战》从Spring Data背景知识、关系型...

    Spring Recipes, 3rd Edition 2014.10最新版本

    此外,书中还介绍了一些高级特性,比如使用Hadoop和MongoDB来处理大数据和云环境下的数据存储。 在Web开发方面,本书主要讨论了Spring MVC、动态脚本语言的集成、与Grails框架和Groovy语言的整合以及RESTful Web...

    spring-xd-components:spring-xd-处理器和组件

    7. **集成能力**:Spring XD与Spring生态系统紧密集成,可以轻松地与Spring Boot、Spring Batch、Spring Cloud Data Flow等其他Spring项目配合使用。此外,它还支持与Apache Hadoop、Cassandra、MongoDB等大数据技术...

    batch2

    "batch2"这个标题可能是指一个批量处理任务的第二部分,或者是一个项目或程序的第二个批次。批量处理通常涉及到处理大量数据或执行一系列自动化任务,这在大数据分析、系统维护或后台服务中非常常见。在Java世界里,...

    携程大数据开发平台实践

    4. **Spring框架**:Spring不仅用于后端服务的开发,还可以与大数据平台结合,例如Spring Batch用于批处理,Spring Cloud Data Flow用于大数据流处理。Spring Boot简化了微服务的开发,Spring Cloud则为服务发现、...

    poi相关jar包

    - POI常与Spring Batch、Quartz等任务调度框架结合,用于定时生成或更新Office文档。 - 在大数据领域,POI可以与Hadoop结合,处理存储在HDFS上的Office文件。 在实际开发中,Apache POI广泛应用于报表生成、数据...

    Java技术问答(带链接)

    - Hadoop大数据处理平台的基本命令。 4. **分布式系统** - 分布式系统的幂等性设计。 - 微服务架构下的数据管理策略。 - 分布式Session管理的最佳实践。 5. **高级主题** - JVM的内部结构与性能调优。 - ...

    docs4dev:包含基本系列文档(Spring,Spring Boot,Spring Cloud,Spring Security,Spring Session),大数据(Apache Hive,HBase,Apache Flume),日志(Log4j2,Logback) ,Http Server(NGINX,Apache),Python,数据库(OpenTSDB,MySQL,PostgreSQL)等最新官方文档以及对应的英文翻译

    Python是一种多用途的编程语言,广泛应用于Web开发、数据分析、机器学习等多个领域,其简洁的语法和强大的库支持使其成为开发者首选的语言之一。 在数据库领域,OpenTSDB是一个分布式的、基于时间序列的数据库,...

Global site tag (gtag.js) - Google Analytics