大数据实践: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 (二)的更多相关文章

  1. 大众点评的大数据实践-CSDN.NET

    大众点评的大数据实践-CSDN.NET 大众点评的大数据实践 爬虫工程师成大数据时代的"宠儿" - 杭州新闻中心 - 杭州网 爬虫工程师成大数据时代的"宠儿"

  2. 大数据实践:ODI 和 Twitter (一)

    本文利用twitter做为数据源,介绍使用Oracle大数据平台及Oralce Data Integrator工具,完成从twitter抽取数据,在hadoop平台上处理数据,并最终加载到oracle ...

  3. Salesforce 大数据量处理篇(二)Index

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.202.0.salesforce_large_data_volumes_bp.meta/ ...

  4. 大数据实践-数据同步篇tungsten-relicator(mysql->mongo)

    // mongo)";digg_bgcolor = "#FFFFFF";digg_skin = "normal"; // ]]> // [导读] ...

  5. Spark项目之电商用户行为分析大数据平台之(十二)Spark上下文构建及模拟数据生成

    一.模拟生成数据 package com.bw.test; import java.util.ArrayList; import java.util.Arrays; import java.util. ...

  6. 大数据:Spark Core(二)Driver上的Task的生成、分配、调度

    1. 什么是Task? 在前面的章节里描写叙述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Wor ...

  7. 大数据笔记(三十二)——SparkStreaming集成Kafka与Flume

    三.集成:数据源 1.Apache Kafka:一种高吞吐量的分布式发布订阅消息系统 (1) (*)消息的类型 Topic:主题(相当于:广播) Queue:队列(相当于:点对点) (*)常见的消息系 ...

  8. ApacheCN 大数据译文集 20211206 更新

    PySpark 大数据分析实用指南 零.前言 一.安装 Pyspark 并设置您的开发环境 二.使用 RDD 将您的大数据带入 Spark 环境 三.Spark 笔记本的大数据清理和整理 四.将数据汇 ...

  9. 年度钜献,108个大数据文档PDF开放下载

    1.大数据的开放式创新——吴甘沙 相关阅读:[PPT]吴甘沙:让不同领域的数据真正流动.融合起来,才能释放大数据的价值 下载:大数据的开放式创新——吴甘沙.pdf 2.微软严治庆——让大数据为每个人服 ...

随机推荐

  1. centos6.5环境下svn服务器和客户端配置实用详解

    一.服务器端配置 安装 # yum install -y subversion yum安装软件,不清除软件包的方法 # vim /etc/yum.conf keepcache=0 建立svn版本库数据 ...

  2. vue系列之flex经典案例

    案例分析: 1.中间文字居中 2.文字俩边有横线 横线无法固定宽度,因为在大屏手机上,容易出现Bug,宽度不够,俩边会出现大量空隙 解决办法,使用flex布局(网站链接) 代码: <div cl ...

  3. NodeJs>------->>第三章:Node.js基础知识

    第三章:Node.js基础知识 一:Node.js中的控制台 1:console.log.console.info  方法 console.log(" node app1.js 1> ...

  4. LeetCode(2):Add Two Numbers 两数相加

    Medium! 题目描述: 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头 ...

  5. spoj New Distinct Substrings

    vjudge原地爆炸... 题意:求一个字符串不同的子串的个数 策略:后缀数组 利用后缀数组的sa和height两个功能强大的数组,我们可以实现上述操作 首先有个很显然的结论:一个字符串的所有子串=它 ...

  6. 性能测试三:jmeter进阶之图形插件

    一.图形化插件的使用 使用Jmeter插件可以更直观的查看tps和响应时间 插件官网: http://jmeter-plugins.org/downloads/all 第一种方法,找到需要的插件下载j ...

  7. python3笔记(一)初识Python

    基础资料 什么是Python? Python官方网站 安装Python python的优点 完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行. pyth ...

  8. 在Centos中安装aria2c

    # 安装aria2c 1 安装epel源 rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm ...

  9. yum 命令下载安装Openjdk

    https://blog.csdn.net/bobo0915/article/details/80707184

  10. POJ 2184 Cow Exhibition (带负值的01背包)

    题意:给你N(N<=100)只牛,每只牛有一个智慧值Si和一个活泼值Fi,现在要从中找出一些来,使得这些牛智慧值总和S与活泼值总和F之和最大,且F和S均为正.Si和Fi范围在-1000到1000 ...