热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Oozie】Oozie企业级案例分析及实现

1、需求分析流程:将Hive表中的数据进行分析,将分析结果存储到hdfs上,然后用Sqoop将hdfs上的分析结果导出到mysql表中&#

1、需求分析


流程:将Hive表中的数据进行分析,将分析结果存储到hdfs上,然后用Sqoop将hdfs上的分析结果导出到mysql表中,前端通过查询mysql表进行数据展示。
Oozie构成:需要两个Action,一个是hive action,一个是sqoop action,workflow中的start节点进入hive action,hive action执行成功进入sqoop action,sqoop action执行成功到达end,有任何地方出错进入error。


2、测试SQL语句

hive (default)> select id, account, password, INPUT__FILE__NAME from user_hive;

OK
id account password input__file__name
1 admin admin hdfs://hadoop-senior.ibeifeng.com:8020/user/hive/warehouse/user_hive/part-m-00000
2 pu 12345 hdfs://hadoop-senior.ibeifeng.com:8020/user/hive/warehouse/user_hive/part-m-00000
3 system system hdfs://hadoop-senior.ibeifeng.com:8020/user/hive/warehouse/user_hive/part-m-00000
4 zxh zxh hdfs://hadoop-senior.ibeifeng.com:8020/user/hive/warehouse/user_hive/part-m-00000
5 test test hdfs://hadoop-senior.ibeifeng.com:8020/user/hive/warehouse/user_hive/part-m-00000
6 pudong pudong hdfs://hadoop-senior.ibeifeng.com:8020/user/hive/warehouse/user_hive/part-m-00000
7 qiqi qiqi hdfs://hadoop-senior.ibeifeng.com:8020/user/hive/warehouse/user_hive/part-m-00000
8 beifeng beifeng hdfs://hadoop-senior.ibeifeng.com:8020/user/hive/warehouse/user_hive/part-m-00000
9 xuanyu xuanyu hdfs://hadoop-senior.ibeifeng.com:8020/user/hive/warehouse/user_hive/part-m-00000
Time taken: 30.244 seconds, Fetched: 9 row(s)

3、SQL脚本select-user.sql

-- drop table tmp_user
drop table if exists default.tmp_user ;
-- create table tmp_user
create external table default.tmp_user like user_hive location '${OUTPUT}';
-- create table default.tmp_user like user_hive location '/user/beifeng/oozie/datas/wf-user-select/output';
-- load data to tmp_user
insert into table tmp_user
select id, account, password
from user_hive
where id >= 15 and account like 'beif%' ;

4、配置文件hive-site.xml

此文件也需要放入apps目录下。



javax.jdo.option.ConnectionURLjdbc:mysql://hadoop-senior.ibeifeng.com:3306/metadata?createDatabaseIfNotExist=trueJDBC connect string for a JDBC metastorejavax.jdo.option.ConnectionDriverNamecom.mysql.jdbc.DriverDriver class name for a JDBC metastorejavax.jdo.option.ConnectionUserNamerootusername to use against metastore databasejavax.jdo.option.ConnectionPassword123456password to use against metastore databasehive.cli.print.headertrueWhether to print the names of the columns in query output.hive.cli.print.current.dbtrueWhether to include the current database in the Hive prompt.hive.fetch.task.conversionminimalSome select queries can be converted to single FETCH task minimizing latency.Currently the query should be single sourced not having any subquery and should not haveany aggregations or distincts (which incurs RS), lateral views and joins.1. minimal : SELECT STAR, FILTER on partition columns, LIMIT only2. more : SELECT, FILTER, LIMIT only (TABLESAMPLE, virtual columns)

5、配置文件job.properties

nameNode=hdfs://hadoop-senior.ibeifeng.com:8020
jobTracker=hadoop-senior.ibeifeng.com:8032
queueName=default
oozieAppsRoot=user/beifeng/oozie-apps
oozieDataRoot=user/beifeng/oozie/datasoozie.use.system.libpath=trueoozie.coord.application.path=${nameNode}/${oozieAppsRoot}/wf-user-select
start=2015-10-15T00:00+0800
end=2015-10-26T00:00+0800
workflowAppUri=${nameNode}/${oozieAppsRoot}/wf-user-selectoutputDir=wf-user-select/output

6、配置文件workflow.xml

${jobTracker}${nameNode}${nameNode}/${oozieAppsRoot}/hive-select/hive-site.xmlmapred.job.queue.name${queueName}OUTPUT=${nameNode}/${oozieDataRoot}/${outputDir}${jobTracker}${nameNode}mapred.job.queue.name${queueName}export --connect jdbc:mysql://hadoop-senior.ibeifeng.com:3306/test --username root --password 123456 --table my_user --num-mappers 1 --fields-terminated-by "\t" --export-dir /user/beifeng/oozie/datas/wf-user-select/output Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]


7、配置文件Coordinator.xml

${workflowAppUri}jobTracker${jobTracker}nameNode${nameNode}queueName${queueName}


推荐阅读
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • MySQL插入数据的四种方式及安全性分析
    本文介绍了MySQL插入数据的四种方式:插入完整的行、插入行的一部分、插入多行和插入查询结果,并对其安全性进行了分析。在插入行时,应注意字段的定义和赋值,以提高安全性。同时指出了使用insert语句的不安全性,应尽量避免使用。建议在表中定义相关字段,并根据定义的字段赋予相应的值,以增加插入操作的安全性。 ... [详细]
  • Explain如何助力SQL语句的优化及其分析方法
    本文介绍了Explain如何助力SQL语句的优化以及分析方法。Explain是一个数据库SQL语句的模拟器,通过对SQL语句的模拟返回一个性能分析表,从而帮助工程师了解程序运行缓慢的原因。文章还介绍了Explain运行方法以及如何分析Explain表格中各个字段的含义。MySQL 5.5开始支持Explain功能,但仅限于select语句,而MySQL 5.7逐渐支持对update、delete和insert语句的模拟和分析。 ... [详细]
  • scrapy 采集入为库 mysql 数据库,只更新一个字段 提示这个语法错误?
    就是查询有没有这个字,如果查到这个字就更新这个字的bsmc字段表是news_topic插入代码如下: ... [详细]
  • 一基础代码检查    检查以bm_开头的系统初始化编码表是否有空值。与业务系统相关的编码项不能存在空值,会导致系统业务无法办理。为初始化数据表、在做测试数据和正式上线前检查。上线 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
author-avatar
报告大王报报报报告大王
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有