Spring、Mybatis 结合 Hadoop

本文探讨了如何在不被Spring完全接管的情况下,将Hadoop作为工具包与Spring结合使用。作者指出,虽然Hadoop不适合直接整合进Spring,但可以在项目中作为辅助工具处理数据。在项目结构中,Hadoop与SSM(Spring、Mybatis、SpringMVC)并存,业务逻辑在action层处理,使用Spring的bean需要先初始化。为了提高读取Hadoop处理后的大量文件的效率,建议使用NIO代替IO。文章提供了详细的项目结构和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天想在hadoop的项目里顺便把输出文件也整理了,写入数据库,就想着能不能整合进spring。一般来说,只要被spring框架整合的框架有扩展创建对象的接口都可以,可是,我刚接触hadoop,还不是很了解。就上spring官网查一下,结果没查到,看来hadoop应该不能像mybatis那样被spring接管了。

这里写图片描述

那么,不能整合,结合总可以吧。我把hadoop当成一个工具包,它只要负责处理数据就行。不过hadoop主要用于数据处理,适合分布式应用,结合spring,意味着只把hadoop当成一个辅助功能来用,所以专业的海量数据处理,项目还是采用分布式hadoop好,我这里纯属偷懒,节省代码,才结合spring,放在同一个项目中。

原理如下图所示:

这里写图片描述

项目结构如图:

这里写图片描述

注意点

  • dao层和service层都跟ssm的一样
@Service("testService")
public class TestServiceImpl implements TestService {
   @Resource
    TestMapper testDao;
}
  • 业务逻辑的处理在action层,包含spring和hadoop,要使用spring的bean,得先初始化
@Controller
public class DataDealing {

    //加载 spring 文件
    static final ApplicationContext ctx = new FileSystemXmlApplicationContext( "classpath:spring-mybatis.xml");

    public static void main(String[] args) {

        TestService as = (TestService )ctx.getBean("testService ");
        ...
        } 
    }
  • 能用hadoop处理的文件应该比较大,输出的结果文件也很大,java去读取输出文件的结果时,也要考虑效率,这里用nio 替代io
    //读取文件
    public static List<String> readApp(String file) {  
        List<String> list = new ArrayList<String>();
        try {  
            list = Files.readAllLines(Paths.get(file),  
                    Charset.defaultCharset());  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        return list;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值