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

数据集成分为三个阶段:获取、整理、分析和决策。

本文从实际出发,讲述大数据处理的真实案例,而不是简单的讲述理论知识。首先会使用flume从twitter加载数据到HDFS,其实是加载到Hive数据库,然后利用(Oracle Data Integrator)ODI来实现逆向工程,并转换Hive中的JSON数据,最终将处理后的结构化数据加载到关系型数据Oracle中。

涉及的组件

要搭建一个完整的hadoop平台是一件比较费事的工作,本文不会在这块做太多描述 ,在本示例中会直接利用oracle提供的大数据虚拟机,可直接从网上下载使用(here),里面已经配置有CDH、Hive等组件,可直接拿来学习使用。在本示例中,会用到虚拟机中如下大数据平台的组件:

1. Hadoop Framework
2. HDFS
3. Hive
4. Flume
5. ZooKeeper
5. Oracle Database
6. Oracle Data Integrator

各组件不在此作详细说明,每个组件的说明和使用可参考网络中其它文章。为什么使用flume进行数据采集?因为flume通过源和目标端的配置,可以很容易实现从twitter获取数据,并加载到HDFS:

本示例中使用一个现成的flume-twitter插件,从twitter中获取数据。该插件使用JAVA开发,利用了一个开源的SDK-twitter4j,此组件完整覆盖了twitter的API。利用该flume插件,不用再自己编写代码,可实现直接从twitter获取数据,并根据需要投递到自己希望的目标端平台。

操作步骤

第一步是在twitter上创建一个账号,访问https://dev.twitter.com/开发人员版块,然后在https://apps.twitter.com/创建访问数据需要的key和令牌,这些会在flume插件中配置时用到,申请完成之后的界面可能如下:

如果不使用oracle提供的大数据平台虚拟机,则需要在自己安装的系统中启动Hadoop及其它相应的平台,如Hive、zooKeeper等,当然还需要安装配置ODI 12c。如果使用的是Oracle虚拟机,则启动相关的服务即可。

配置flume从twitter获取数据。首先下载flume软件,并拷贝相应的lib到flume的指定目录,比如添加下载的jar到flume的classpath:cp /usr/lib/flume-ng/plugins.d/twitter-streaming/lib/   /var/lib/flume-ng/plugins.d/twitter-streaming/lib/

创建flume.conf, 根据前面的twitter’s key和hadoop编辑此文件,差不多是下面这样:

接下来配置Hive

1. 需要能解析JSON数据的序列类,可以从此处下载一个编译好的JSON SerDe。

2. 创建Hive需要的目录和权限:

$ sudo -u hdfs hadoop fs -mkdir /user/oracle/warehouse
$ sudo -u hdfs hadoop fs -chown -R oracle:oracle /user/hive
$ sudo -u hdfs hadoop fs -chmod 750 /user/oracle
$ sudo -u hdfs hadoop fs -chmod 770 /user/oracle/warehouse

3. 配置Hive的Metastore,本示例是在mysql中创建,在此不再详述。

4. 在Hive中创建tweets表:

回到flume,开始抓取数据:

1. 在hdfs中创建/user/oracle/tweets目录 ,用于存放flume抓取的数据,同时,也是hive表中外部引用路径所在

2. 使用下面的语句启动flume

在运行日志中可以看到flume在不断将抓取到的数据写入对应目录下的文件:

让flume agent运行几分钟,确认已经捕获到了数据之后可以停止此进程。然后在hadoop web控制台可以查看到hdfs对应目录下的数据文件:

查看任何一个数据文件的内容,如下:

数据都是基于json格式的,可以在hive中查看抓取的记录数:

经过flume几分钟的数据抽取,我们已经得到了16161条记录。这就是大数据时代数据产生的威力。

最新文章

  1. css中vertical-align垂直居中的认识
  2. Reflection应用场景-利用反射机制将表单数据自动填充到JavaBean中
  3. 记录一下dotnetcore.1.0.0-VS2015Tools.preview2安装不上的问题
  4. quartz启动时间配置
  5. 使用eclipse搭建hadoop开发环境
  6. Android真机调试的时候logcat中无法输出调试信息的解决办法
  7. nginx 重定向到index.php
  8. obj-c编程15[Cocoa实例02]:KVC和KVO的实际运用
  9. 拒绝回调,拥抱async await
  10. 基于jeesite的cms系统(二):整体设计
  11. 初探Java设计模式3:行为型模式(策略,观察者等)
  12. H5混合开发app常用代码
  13. java 代码获取视频时长
  14. 微软BI SSIS 2012 辅助阅读博客
  15. QT中添加 动态库(.so) 和 静态库 (.a) 的方法
  16. 屏蔽windows快捷键的方法
  17. JDK源码阅读之Collection
  18. Centos 6.5安装OpenSSL
  19. SQL数据库,如何把服务器中的一张表插入到另外一个服务器的一张表中
  20. [bzoj3995] [SDOI2015]道路修建 线段树

热门文章

  1. [Java] File类的常用操作
  2. JDBC中的批量插入和乱码解决
  3. spring mvc中的json整合
  4. Django 应用 Buildbot
  5. iOS 数据存储 - 归档和解归档
  6. (整理)RPC
  7. java枚举使用
  8. 分享一个基于EF5.0封装的BaseDAL
  9. js对象3.1--什么是类,对象--杂志
  10. Tomcat源码分析——SERVER.XML文件的加载与解析