Hive简单优化;workflow调试
1. 定义job名字
SET mapred.job.name='customer_rfm_analysis_L1';
这样在job任务列表里可以第一眼找到自己的任务。
2. 少用distinct, 尽量用group by
因为会把数据弄在一个reduce中,造成数据倾斜。distinct数据数量大于1000条时。
3. join时小表最好放左边
否则会引起磁盘和内存的大量消耗
4. 小表和超大的表join时,可以使用map join
能把小表写入内存中,便于多次读写。
5. 如果union all的部分个数大于2
或者每个union部分数据量大,应该拆成多个insert into 语句
6. SQL里的通用设置
--每个sql的代码都一样
SET mapred.max.split.size=256000000;
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
SET mapred.output.compression.type=BLOCK;
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;
set mapreduce.map.output.compress=true;
set mapred.map.output.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;
set mapreduce.reduce.shuffle.input.buffer.percent =0.6;
set mapreduce.reduce.shuffle.parallelcopies = 5;
set hive.exec.max.created.files=655350;
set hive.exec.max.dynamic.partitions=10000000;
set hive.exec.max.dynamic.partitions.pernode=10000000;
7. workflow
1) coordinator 动态日期获取
${coord:formatTime(coord:dateOffset(coord:nominalTime(),-2,'DAY'), 'yyyy-MM-dd')}
表示取当天的两天之前的日期(格式是 yyyy-MM-dd)
${coord:formatTime(coord:nominalTime(), 'yyyy-MM-dd')}
表示取当天的日期(格式是 yyyy-MM-dd)
注意: 当修改workflow后,需要重新提交coordinator才会生效。
2) coordinator 时间设置
要选用utc时区;
设置时间为需求的执行时间 - 8 hours;
3) coordinator 可以自动识别出 workflow中调用的参数,赋值给它即可。
SQL中的参数要设置成 ${参数名这种},如果是字符串,'${字符串名}'
workflow中设置参数为 ${参数名},不需要引号。
4)workflow 参数可以上传一个文件。 文件该是什么格式??
5) 半路结束,状态为failed。
Halting due to Out Of Memory Error...
GC overhead limit exceeded
尝试方法:调大oozie的heapsize,解决!
6)并发子workflow相互不能执行成功,状态为Succeeded。但实际上任务并未完成。是因为有相邻子workflow出现错误
GC overhead limit exceeded
Closing: 0: jdbc:hive2://spark-02:10000/default
Intercepting System.exit(2)
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.Hive2Main], exit code [2]
8 oozie 可以调用 Hive QL,Spark, Java,Shell
9 Bundle 跟workflow, coordinator 在同一个设置区。
可以把多个coordinator打包成一个。
Hive简单优化;workflow调试的更多相关文章
- GCC(警告.优化以及调试选项)
GCC(警告.优化以及调试选项) [介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件 预处 ...
- Hive 常用优化参数
常用调优测试语句 : ①显示当前hive环境的参数值: set 参数名; 如: hive> set mapred.map.tasks;mapred.map.tasks; ②设置hi ...
- Hive SQL 优化面试题整理
Hive优化目标 在有限的资源下,执行效率更高 常见问题: 数据倾斜 map数设置 reduce数设置 其他 Hive执行 HQL --> Job --> Map/Reduce 执行计划 ...
- Serverless 工程实践 | Serverless 应用优化与调试秘诀
作者|刘宇 前言:本文将以阿里云函数计算为例,提供了在线调试.本地调试等多种应用优化与调试方案. Serverless 应用调试秘诀 在应用开发过程中,或者应用开发完成,所执行结果不符合预期时,我 ...
- 一次千万级别的SQL查询简单优化体验
背景:从两张有关联的表查询数据,A表数据量1400万,B表数据量8000万.A与B通过ID逻辑关联,没有实际的外键.B表是后来扩展出来的. 问题:根据某个ID查询时超时,运行时跑不出结果. 原因:使用 ...
- Hive性能优化
1.概述 继续<那些年使用Hive踩过的坑>一文中的剩余部分,本篇博客赘述了在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题.下面开始本篇文章的优化介绍. 2.介绍 首先 ...
- 双数组trie树的基本构造及简单优化
一 基本构造 Trie树是搜索树的一种,来自英文单词"Retrieval"的简写,可以建立有效的数据检索组织结构,是中文匹配分词算法中词典的一种常见实现.它本质上是一个确定的有限状 ...
- [mysql] 2进制安装和简单优化
##################################mysql 2进制安装和简单优化################################################## ...
- Hive篇---Hive使用优化
一.前述 本节主要描述Hive的优化使用,Hive的优化着重强调一个 把Hive SQL 当做Mapreduce程序去优化 二.主要优化点 1.Hive运行方式:本地模式集群模式 本地模式开启本地模式 ...
随机推荐
- TopCoder SRM 633 Div.2 500 Jumping
题意:给一个点(x,y),给一些步长delta1,delta2...deltaN,问从(0,0)严格按照步长走完N步后能否正好到达(x,y)点. 解法:其实就是判断这些线段和(0,0)-(x,y)这条 ...
- 2014 Super Training #8 B Consecutive Blocks --排序+贪心
当时不知道怎么下手,后来一看原来就是排个序然后乱搞就行了. 解法不想写了,可见:http://blog.csdn.net/u013368721/article/details/28071241 其实就 ...
- xampp 用phpmyadmin在页面上修改密码后,无法登陆,密码没问题
xampp 用phpmyadmin在页面上修改密码后,无法登陆,密码没问题一直提示密码错误, 什么原因? ------解决方案--------------------改了密码之后,phpmyadmin ...
- mac和centos下git安装
mac下面的git安装,这篇文章写的很详细了http://www.cnblogs.com/ccdev/archive/2012/09/12/2682098.html 谈谈centos下的安装.我用的是 ...
- linux下安装php的imagick扩展模块(附php升级脚本)
imagick是一个PHP的扩展,是一套软件系列,用ImageMagick提供的API来进行图片的创建与修改,不过这些操作已经包装到扩展imagick中去了,最终调用的是ImageMagick提供的A ...
- spring这么流行的原因是什么
spring这么流行的原因是什么?对象与对象之间的依赖关系不再通过对象去创建对象了,而是通过配置文件来管理他们的依赖关系.这就是spring的依赖注入机制,这个注入关系在一个叫IOC的容器中管理.在这 ...
- 05SpringMvc_映射器SimpleUrlHanderMapping
这篇文章讲的还是映射器,映射器类有两种,前一篇文章讲的是BeanNameUrlHanderMapping映射器类.今天讲的是SimpleUrlHanderMapping映射器类. 这两个映射器类有什么 ...
- Android应用开发中如何使用隐藏API(转)
一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide标记的public类.方法或常量)是有原因的.其中很大的原因就是Android系统本身还在不断的进化发展中.从1.0.1.1到 ...
- 加密算法使用(一):用CRC32来压缩32uuid字符串
CRC32相比MD5重复率较高, 不过我们仍然可以使用CRC32然后转长整形的方式将32位的UUID字符串压缩成更短的整形唯一标识. /** * * @Title: getCRC32Value * @ ...
- SilverLight自定义ImageButton
SilverLight中XAML的写法和WPF一样,但是发现在自定义按钮上,没有WPF来的容易,下面说说我制作SilverLight中的ImageButton的一些思路. 在SilverLight中, ...