项目作者: YunKillerE

项目描述 :
基于sqoop封装的一个通用的抽取工具,方便数据平台界面提交任务以及数据源管理
高级语言: Java
项目地址: git://github.com/YunKillerE/Datai.git
创建时间: 2017-03-17T02:14:27Z
项目社区:https://github.com/YunKillerE/Datai

开源协议:Apache License 2.0

下载


简单介绍

  1. 基于sqoop封装的抽取程序

封装的目的

  1. 1,配合数据平台展示界面中的数据源管理模块,方便前端从mysql获取抽取数据
  2. 2,方便通过前端界面来提交任务,只需要将相应的抽取规则写入到mysql,然后提交一个任务到azkaban就好了

背景

  1. 1,刚开始用shell写的,抽取元数据存储在一个文本文件中,在生产环境运正常行三个月
  2. 2,后来改为用shell+python写的,抽取元数据就存储到mysql中了,仅仅测试通过了,未在生产环境下使用过,如果要使用先自己测试好
  3. 3,再后来直接改为用java写了,抽取元数据也是存储在mysql中,已在生产环境正常运行三个多月了

抽取元数据存储在mysql中的表结构

主要有以下几个表:

  1. 1database_info 存储源服务器地址,账号密码等,包括RDBMS/FTP/FILESYSTEM...
  2. 2sqoop_info 存储抽取规则,比如增量合并、增量不合并、全量、是否压缩、是否做字段映射、并发等
  3. 3table_timestamp 存储每个表的抽取时间,主要针对增量抽取
  4. 4hdfs_export_info 存储从hdfs导出到rdbms中的地址
  5. 5hdfs_export_opts 存储从hdfs导出到rdbms时的相应参数
  6. 表结构,随时都有更新,最新的参照src/sqoop.sql

代码结构介绍

  1. shell目录:
  2. fullv4*.sh shell,使用方法比较简单,所有的参数都在para_file文件中,para_file.xlsx是示例,脚本运行加上表名就可以了
  3. fullv5.sh shell+python版本,所有参数都在mysql中使用方法和上面一样
  4. src目录:
  5. java版本的抽取,针对上面的版本进行改造,改成了java,使用方法也一样,打成jar包,后面加表名就可以了

java开发环境

  1. 1idea
  2. 2java 1.7
  3. 3sshxcute 1.0
  4. 4cdh5.8.4 jars
  5. 这里注意:不能采用cdh5.8.4之前的版本,否则sqoop导出会有问题,老版本有bugSQOOP-2990cdh5.8.4后修复了

目前已实现的功能

  1. 1,从RDBMS中抽取数据到hdfs
  2. 2,把清洗后的数据导出到RDBMS
  3. 3,从分布式文件系统HDFS中抽取数据,目前仅考虑了非结构化数据,当然把结构化当作非结构化来抽取也是可以的
  4. 4,从本地文件系统中抽取数据,目前仅考虑了非结构化数据,当然把结构化当作非结构化来抽取也是可以的
  5. 5,对hdfs上的数据进行压缩

后续规划

  1. 1,计划将datax合并进来,弥补上面结构化的数据的抽取的缺失
  2. 2,增加从RDBMS中直接抽取到hbase中的支持
  3. 3,合并另外一个项目HbaseBulkLoad到当前项目中,实现从hdfs导入数据到hbase
  4. 4,增加导入hbase后,采用solr进行二级索引的功能