Spring、Mybatis 结合 Hadoop

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

Spring、Mybatis 结合 Hadoop_第1张图片

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

原理如下图所示:

Spring、Mybatis 结合 Hadoop_第2张图片

项目结构如图:

Spring、Mybatis 结合 Hadoop_第3张图片

注意点

  • 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;
    }
  • 至于hadoop的引入和使用,可以看看我上一篇文章:http://blog.csdn.net/change_on/article/details/78856751

你可能感兴趣的:(hadoop)