大数据实践:ODI和Twitter(二)

在前面的文章中,我们已经使用flume将数据从twitter抓取到Hive中,现在我们来看看ODI(Oracle Data Integrator)如何在HIVE表中进行逆向工程,打开HIVE模型,然后在逆向工程中选择“新的数据存储”及待逆向的对象,如下:

逆向工程完成之后,得到如下的元数据信息:

上面的操作步骤与普通的关系型数据库一样,没有特殊之处,ODI可以对HIVE的表进行逆向工程,使用RKM Hive, RKM HBase, IKM File to Hive, IKM SQL to Hive, IKM Hive Transform, CKM Hive, IKM File/Hive to SQL等知识模块,可以在HIVE上处理数据。这些知识模块都是现成的,不需要特殊处理就可以直接使用,所以你不用了解如何编写MapReduce代码、访问HDFS、HIVE或其它Hadoop的细节,就可以在hadoop平台上加载、处理数据。你需要做的就是利用ODI来实现数据集成,创建转换接口,与传统的DB处理方式一样。下面是在ODI中查看HIVE中数据表的截图:

在本文,我们在第一个接口示例中,先在hadoop平台进行数据加载和处理,然后将处理好的数据结果加载到Oracle DB中。首先,创建一个接口,结果是基于下面的DML语句:

"SELECT t.retweeted_screen_name, sum(retweets) AS total_retweets, count(*) AS tweet_count FROM (SELECT retweeted_status.user.screen_name as retweeted_screen_name, retweeted_status.text, max(retweet_count) as retweets FROM tweets GROUP BY retweeted_status.user.screen_name, retweeted_status.text) t GROUP BY t.retweeted_screen_name"

下面是基于流和声明式设计的数据流映射图:

首先从Hive tweets2表中获取数据,然后进行汇总,接下来加载到另一张HIVE表t_inf中,再进行汇总,最后将结果加载到HIVE表t_inf1中。从上面的数据流中可以看到,所有的数据处理都是在hadoop平台,数据并没有转移到外部进行处理。在ODI中看到的物理视图如下:

目标表选择 "IKM Hive Control Append"集成模块,执行此映射转换之后,结果如下:

值得再次说明的是,在上面所有处理中,不需要了解hadoop平台的原理和实现细节,只需要利用ODI调用相应的知识模块即可,即专注于数据处理过程中的转换加载等操作,而不用关心MapReduce、Hive外部表的创建等细节,这些细节都是由ODI的知识模块完成,在数据集成的开发过程中,只需要引用这些模块即可。

上面所有的数据处理及结果都是在hadoop中,接下来我们再建一个映射接口,将数据从Hive迁移到Oracle中,比如供BI使用。逻辑视图如下:

在物理设计中,选择Hive to Oracle (Big Data SQL) 加载模块:

执行上面的映射转换接口,即可将数据从hive加载到Oracle。

接下来的第二个示例中,我们只创建一个映射接口,将数据转换之后,直接加载到Oracle中,而不是分成两个转换接口将数据处理后从hive再加载到oracle中。首先在Hive中先对抽取的数据做些调整,即选择如下DML语句产生的数据作为数据源:

"select user.screen_name, user.followers_count c from tweets"

逻辑视图如下:

将tweets表中的数据先抽取到一个HIVE的临时表,最后将结果加载到Oracle 中,物理视图如下:

这次可以看到,源和目标不在同一个物理区域,源是HIVE,目标端是Oracle,所以上面的物理视图中看到是两个不同的区域。在源端,使用IKM Hive Control Append将数据加载到临时表:

在目标端,选择LKM Hive to Oracle (Big Data SQL) ,将数据从HDFS(Hive)迁移到Oracle 数据库:

最后,选择"IKM Oracle Insert"知识模块,将数据从临时表加载到目标表,因为数据已经在oracle DB中,所以使用Oracle相关的知识模块即可。

执行此转换接口,产生的日志如下:

在oracle结果表中的数据如下:

上面的操作对于数据分析而言还不是结束,这只是数据处理的基础,站在BI的角度,还可以在此基础上进行数据分析和挖掘,或是BI的展现。本文只是一个起点,利用ODI帮助实现数据处理,无论是大数据平台还是传统的关系型数据库,ODI都可以使用相同的方式处理,提升数据处理的效率。

结论

ODI在大数据平台上可以非常灵活的进行数据加载和处理,无需任何hadoop平台的手工编码,只需要拖拉选择,即可实现在hadoop平台上的数据转换、数据加载和集成,以及在大数据平台和关系型数据库之间的数据互导,同时,在数据处理时充分利用大数据平台的分布式处理优势,而不用将数据迁移到hadoop平台之外进行处理。

最新文章

  1. UART to Serial Terminal(转载)
  2. java学习笔记01--数据类型
  3. Android 照相功能
  4. iPhone X 网页导航概念
  5. 【代码笔记】Web-CSS-CSS Border(边框)
  6. 从零开始学习Java多线程(二)
  7. Linux 文件恢复
  8. 解决Maven依赖报错问题
  9. QTP - 工作原理
  10. cpp 区块链模拟示例(三)新基本原形工程的建立
  11. 20145221 《Java程序设计》实验报告四:Android开发基础
  12. Fiddler怎么可以抓取https的请求包
  13. 高可用Hadoop平台-启航
  14. Mac OS X /home 目录权限修改
  15. virtualbox+vagrant学习-2(command cli)-22-vagrant validate命令
  16. Git错误提示之:fatal: Not a git repository (or any of the parent directories): .git
  17. Python 之定时器
  18. java spring boot 出现 java.lang.UnsatisfiedLinkError
  19. 白盒测试实践项目(day6)
  20. IOS开发数据存储篇—IOS中的几种数据存储方式

热门文章

  1. 修改centos和ubuntu ssh远程连接端口提升系统安全性
  2. 转载:获取Nginx源码(1.3.5)《深入理解Nginx》(陶辉)
  3. bert 词典扩充方案
  4. CentOS7图形界面与命令行界面切换
  5. hdu6153 poj3336强化版kmp+线性dp
  6. hdu4052矩形面积并
  7. 两个inline-block元素上下不对齐,出现错位
  8. python 全栈开发,Day54(node.js初识)
  9. MonologFX最简demo,javafx外用dialog示例
  10. 【C++ Primer 第11章】4. 无序容器