快速开发数据分析系统

系统简介

        本系统可实现抓取不同的数据源,如oracle数据库、mysql数据库、excel文件、格式化的文本文件和word文件。通过建立相应的转换(Transform)步骤,将数据以某种格式存入特定的目录数据库。

        目前为系统的初建期,只需要支持异构数据库即可。

        要求:快速开发、容易扩展、容易维护

系统架构

        本系统通过使用ETL工具完成从不同数据源extract数据,并使用transform完成数据的聚合、计算、异构连接等操作,load到指定的目标格式(目前是mysql数据库,后期如果性能不够,考虑mysql的分区表或者数据仓库)

        使用前期建立的ELK框架,使用LogStash读入从目标数据库中读取数据到elasticSearch中进行索引和分析,并使用Kibana和Graph进行展示

ETL介绍

        ETL将源数据经过抽取/转换过程,最终装载到目标系统,可实现将针对OLTP的数据转换为针对数据仓库的OLAP系统。

本次选用的ETL工具是Kettle,选择理由是开源免费,纯java编写,绿色无需安装,数据抽取高效稳定(数据迁移工具)。 并且有一定的中文支持 

  支持图形化的GUI设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现

Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制
如建立 A.a,A.b,A.c 到 B.b 表的一个转换:
1)创建Transform:  表输入——》A.a表查询——》A.b表查询——》过滤记录——》插入和更新(文本文件输出)
2)建立job:定时任务
SPOON 允许你通过图形界面来设计ETL转换过程(Transformation)。
CHEF 允许你创建任务(Job)
Kitchen——工作(job)执行器 (命令行方式)
Span——转换(trasform)执行器 (命令行方式)

我们使用的ETL功能比较简单,只要其支持异构数据库,并且具有计算、分组、聚集就足够,而学习百度文库里关于Kettle的介绍,发现这些功能都已经支持了,如图:

1.    支持的数据库:

2.    其他输入类型

3.    支持的转换规则:

LogStash介绍

        通过插件方式,支持从数据库插入数据,通过使用sql语句完成数据的载入,并支持以scheduler凡是定义定时查询,方式如下:

input {
  jdbc {
    jdbc_driver_library =>"mysql-connector-java-5.1.36-bin.jar"
    jdbc_driver_class =>"com.mysql.jdbc.Driver"
    jdbc_connection_string =>"jdbc:mysql://localhost:3306/mydb"
    jdbc_user =>"mysql"
    parameters =>{"favorite_artist"=>"Beethoven"}
    schedule =>"* * * * *"
    statement =>"SELECT * from songs where artist = :favorite_artist"
  }
}

        每分钟执行statement中的定义

插入数据库

       https://www.elastic.co/blog/logstash-jdbc-input-plugin

       https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html

 

ElasticSearch介绍

        The open source Elastic Stack — that’s Elasticsearch, Kibana,Logstash, and Beats — helps you take data from any source, any format andsearch, analyze, and visualize it in real time. 

视频教程:

       视频教程:https://www.elastic.co/webinars/logstash-0-60-in-60?iesrc=ctr

有用插件:

Marvel:Monitoring for Elasticsearch

Marvel Reference [2.3] — other versions

Shield: Securityfor Elasticsearch

Shield Reference [2.3] — other versions

Watcher: Alertsfor Elasticsearch

Watcher Reference [2.3] — other versions

SmartCN

Ananalyzer for Chinese or mixed Chinese-English text. This analyzer usesprobabilistic knowledge to find the optimal word segmentation for SimplifiedChinese text. The text is first broken into sentences, then each sentence issegmented into words.

The Pinyin Analysis plugin

integrates Pinyin4j(http://pinyin4j.sourceforge.net/) module into elasticsearch.

 

自定义客户端实现:

        Elastic offers a host of language clients for Elasticsearch,including Ruby, Python, PHP, Perl, .NET, Java, and Javascript, and more.Created to be easy to use and efficient, our language clients aim to help youuse the software you love in the language you speak

Graph介绍

        作为ElasticSearch的插件之一,提供网状图的显示格式,用于显示彼此之间的联系,可用于行为分析、用户推荐等功能

参考资料:

https://www.elastic.co/webinars/sneak-peek-of-graph-capabilities-with-elasticsearch?baymax=rtp&elektra=products&iesrc=ctr

参考资料

Kettle介绍:http://wenku.baidu.com/view/745fa8d049649b6648d747df.html

Kettle主页:http://community.pentaho.com/projects/data-integration/

ETL方法:http://wenku.baidu.com/view/9558b7c78bd63186bcebbca5.html?re=view

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值