大数据实践:ODI 和 Twitter (二)
大数据实践: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平台之外进行处理。
大数据实践:ODI 和 Twitter (二)的更多相关文章
- 大众点评的大数据实践-CSDN.NET
大众点评的大数据实践-CSDN.NET 大众点评的大数据实践 爬虫工程师成大数据时代的"宠儿" - 杭州新闻中心 - 杭州网 爬虫工程师成大数据时代的"宠儿"
- 大数据实践:ODI 和 Twitter (一)
本文利用twitter做为数据源,介绍使用Oracle大数据平台及Oralce Data Integrator工具,完成从twitter抽取数据,在hadoop平台上处理数据,并最终加载到oracle ...
- Salesforce 大数据量处理篇(二)Index
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.202.0.salesforce_large_data_volumes_bp.meta/ ...
- 大数据实践-数据同步篇tungsten-relicator(mysql->mongo)
// mongo)";digg_bgcolor = "#FFFFFF";digg_skin = "normal"; // ]]> // [导读] ...
- Spark项目之电商用户行为分析大数据平台之(十二)Spark上下文构建及模拟数据生成
一.模拟生成数据 package com.bw.test; import java.util.ArrayList; import java.util.Arrays; import java.util. ...
- 大数据:Spark Core(二)Driver上的Task的生成、分配、调度
1. 什么是Task? 在前面的章节里描写叙述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Wor ...
- 大数据笔记(三十二)——SparkStreaming集成Kafka与Flume
三.集成:数据源 1.Apache Kafka:一种高吞吐量的分布式发布订阅消息系统 (1) (*)消息的类型 Topic:主题(相当于:广播) Queue:队列(相当于:点对点) (*)常见的消息系 ...
- ApacheCN 大数据译文集 20211206 更新
PySpark 大数据分析实用指南 零.前言 一.安装 Pyspark 并设置您的开发环境 二.使用 RDD 将您的大数据带入 Spark 环境 三.Spark 笔记本的大数据清理和整理 四.将数据汇 ...
- 年度钜献,108个大数据文档PDF开放下载
1.大数据的开放式创新——吴甘沙 相关阅读:[PPT]吴甘沙:让不同领域的数据真正流动.融合起来,才能释放大数据的价值 下载:大数据的开放式创新——吴甘沙.pdf 2.微软严治庆——让大数据为每个人服 ...
随机推荐
- 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 安装ClamAV对centos系统进行病毒查杀
安装ClamAV 1.安装epel源 yum install epel-release 在安装了EPEL源后,运行下面的命令安装ClamAV # yum install clamav-server c ...
- java调用monkeyrunner(亲测绝对可行)
我自己试验了下和官方的API编写不太一样,老别扭了,建议还是用Python写吧 昨天在网上查了一下一天,都是转来贴别人的,真正敲的很少,我真不知道转的大侠你们自己敲了么? 先截一段不负责任的blog图 ...
- javascript 判断属性是否存在
判断一个实例是否存在某个属性的方法使用 "in" var Student = { name: "Robot", height: 1.2, sex: " ...
- MVC,MVP和MVVM的区别
MVC 转载标名出处 dub 从这幅图可以看到,我们可以看到在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑. 在MVC模型 ...
- OneNET麒麟座应用开发之七:控制采样电机
气体采样采用主动抽取气体的方式保证充足而平稳的气流,所以我们采用气泵抽取气体来完成. 1.设计概述 客户对这部分要求能够设定电机的速度,但并不需要动态调节.对电机的控制有很多方式,我们采用比较简单的方 ...
- 测试开发之Django——No6.Django模板中的标签语言
模板中的标签语言 1.if/else {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即:变量存在,非空,不是布尔值假),系统会显示在{% if %} 和 {% endi ...
- python之抽象基类
抽象基类特点 1.不能够实例化 2.在这个基础的类中设定一些抽象的方法,所有继承这个抽象基类的类必须覆盖这个抽象基类里面的方法 思考 既然python中有鸭子类型,为什么还要使用抽象基类? 一是我们在 ...
- Fiddler抓包11-HTTPS证书Actions无法导出问题
前言 在点Actions时候出现Export Failed:The root certificate could not be located.最近有很多小伙伴在fiddler导出证书的时候,遇到无法 ...
- POJ 1703 Find them, Catch them (并查集)
题意:有N名来自两个帮派的坏蛋,已知一些坏蛋两两不属于同一帮派,求判断给定两个坏蛋是否属于同一帮派. 思路: 解法一: 编号划分 定义并查集为:并查集里的元素i-x表示i属于帮派x,同一个并查集的元素 ...