hive
yisun123456
大数据开发、个性化推荐
展开
-
hive解析json数组
hive sql 解析json数组原创 2022-07-05 11:03:13 · 393 阅读 · 0 评论 -
hive stage job等划分
1.通过explain可以清晰的看到stage划分。常见的是各个算子(join groupby orderby 等有shuffle)或者是一些filter where等。2.基于上面的1就可以划分出stage。但是有些stage并不会执行,或者说经过优化器后的filter where会在其他stage里进行。这样,有些stage就是空的stage。3.基于stage划分,如何确定job数量(总数就是stage数量)。主要是看哪些stage会执行。只有需要执行的stage才会提交yarn,生成具体的j原创 2020-12-18 10:38:50 · 3928 阅读 · 0 评论 -
hive通过union all 实现 join
对于join操作,需要shuffle,在reduce端进行。所以对于数据量超大,比如两个表记录条数均在亿级别的,往往会导致计算时间过长。那如何可以高效的完成呢?就是将关联操作尽量的迁移到map端。具体做法:selectuid,COALESCE(a,null) as a,COALESCE(b,null) as bfrom(select uid, a,null as b from table1 -- uid 唯一union allselect uid , null ...原创 2020-11-07 21:46:13 · 874 阅读 · 1 评论 -
记 hive增加字段不完全生效
使用公司内部中控平台,对已有hive在最后位置增加一个字段,hive文件格式是parquet,增加的字段类型是array<string>。通过spark读取文件,确定已经写入新增的字段值。通过中控平台上的hivesql查询,该字段一直是空null。通过中控平台上的sparksql查询,报错(之前的数据不存在)。解决办法:1.删掉该新增字段,发现中控平台报错不了。放弃2.对刚才写入的分区,删掉并重建该分区。(外部表)。问题解决。坑。。。。...原创 2020-10-27 15:56:08 · 615 阅读 · 0 评论 -
hive MapReduce Timed out after 600 secs
mapred.task.timeout参数说明 该参数默认为 600秒(60000 ms) 。 如果map或reduce方法在600秒内没有返回或,TaskTracker将认为相应的task已经死亡。 并向JobTracker汇报错误。JobTracker会kill 当前task,并在其他节点上重新执行它。如果多次尝试均失败,那整个job就失败返回可以调节该参数在当前任务中的数值,set mapred.task.timeout=1800000; (60000*30) 300min...原创 2020-10-21 09:33:01 · 2214 阅读 · 0 评论 -
hive sql 实现有序集合
select uid,split(regexp_replace(concat_ws('\,',sort_array(collect_list(time_vid))),'\\d+_',''),',') as vidsfrom(select uid,vid,time,concat_ws('_',cast(time as string),cast(vid as string)) as time_vid from table)t1 group by uid原创 2020-10-12 10:43:00 · 697 阅读 · 0 评论 -
计算当前时间观影并活跃 在未来只观影短视频
下面代码是伪代码,只是为了提供思路。具体需要重新计算(部分sql存在问题)selectcount(distinct uid ) as cntfrom(selectt1.uid,t2.p_day,sum(short_video ) asshort_video ,min(case when t1.p_day=t2.p_day then 0 else 1 end)as t...原创 2019-11-22 10:27:29 · 157 阅读 · 0 评论 -
spark hive中的cube 、roll_up和grouping sets
hive简单总结cube(a,b,c)=>就是魔方,就是groupby()的a,b,c,ab,ac,bc,abc结果的union all用法:group by a,b,c with cuberollup(a,b,c)=>就是卷曲来,就是groupby() 的a,ab,abc的union all用法:group by a,b,c with rollupgroupin...原创 2019-10-21 16:36:37 · 753 阅读 · 0 评论 -
大数据常见错误解决方案
1、用./bin/spark-shell启动spark时遇到异常:java.net.BindException: Can't assign requested address: Service 'sparkDriver' failed after 16 retries!解决方法:add export SPARK_LOCAL_IP="127.0.0.1" to spark-env.sh2、j...转载 2019-04-22 09:52:04 · 1980 阅读 · 0 评论 -
hive 数据倾斜优化
Hive数据倾斜Group By 中的计算均衡优化 1.Map端部分聚合 先看看下面这条SQL,由于用户的性别只有男和女两个值 (未知)。如果没有map端的部分聚合优化,map直接把groupby_key 当作reduce_key发送给reduce做聚合,就会导致计算不均衡的现象。虽然map有100万个,但是reduce只有两个在做聚合,每个reduce处理100亿条记...转载 2019-01-14 10:22:33 · 298 阅读 · 2 评论 -
hive 参数说明
hive.exec.mode.local.auto 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) true hive.exec.mode.local.auto.inputbytes.max 如果 hive.exec.mode.local.auto 为 true,当输入文件大小小于此阈值时可以自动在本地模式运行,...转载 2019-01-04 10:53:35 · 203 阅读 · 0 评论 -
hive 利用差值有序实现第二次局部分组
案例一:selectuid,count((p_day-order) as data ) pfrom(selectuid, p_day,row_number() over(partition by uid order by p_day asc ) as orderfrom(select uid,datediff(p_day,'2000-01-01 00:00:00') as p_d...原创 2018-12-19 09:48:34 · 716 阅读 · 0 评论 -
hive 查询写入到hdfs
将hive数据 查询出结果保存在hdfs set mapred.reduce.tasks = 1;set mapred.job.name=recommend_$idate;insert overwrite directory '/user/client/' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'select * from t...原创 2018-12-19 16:34:45 · 3588 阅读 · 0 评论 -
odps正则抽取省份以及城市
在odps中使用方式如下 。-- select 1,-- case when length(regexp_extract('上海市浦东新区西门路588弄-39-~42号','(.+省|.+自治区)(.+市)',1))=0-- then regexp_extract('上海市浦东新区西门路588弄','(.+市)',1)-- else regexp_extract('上海市浦东新区西门路...转载 2019-07-16 11:38:52 · 1156 阅读 · 0 评论 -
使用MSCK命令修复Hive表分区
一、介绍我们平时通常是通过alter table add partition方式增加Hive的分区的,但有时候会通过HDFS put/cp命令往表目录下拷贝分区目录,如果目录多,需要执行多条alter语句,非常麻烦。Hive提供了一个"Recover Partition"的功能。具体语法如下:MSCK REPAIR TABLE table_name;原理相当简单,执行后,Hive会检...转载 2018-12-03 11:58:47 · 3062 阅读 · 0 评论 -
hive的各种存储类型对比
Apache Hive支持Apache Hadoop中使用的几种熟悉的文件格式,如TextFile,RCFile,SequenceFile,AVRO,ORC和Parquet格式。ClouderaImpala也支持这些文件格式。在建表时使用STORED AS (TextFile|RCFile|SequenceFile|AVRO|ORC|Parquet)来指定存储格式。TextFile每一行都...转载 2019-04-29 17:56:51 · 1261 阅读 · 0 评论 -
sqoop将mysql数据导入到hive分区
导入Hive单分区表直接用sqoop命令就可以。1)首先建立单分区表(内部表)CREATETABLE IF NOT EXISTS import.zbd_t_product_comparison (GCJT_SYB_DESC STRING COMMENT '产品线',brand STRING COMMENT...转载 2019-04-30 17:13:35 · 1474 阅读 · 0 评论 -
hive 随机抽样
在大规模数据量的数据分析及建模任务中,往往针对全量数据进行挖掘分析时会十分耗时和占用集群资源,因此一般情况下只需要抽取一小部分数据进行分析及建模操作。Hive提供了数据取样(SAMPLING)的功能,能够根据一定的规则进行数据抽样,目前支持数据块抽样,分桶抽样和随机抽样,具体如下所示:数据块抽样(tablesample()函数)1) tablesample(n percent) 根据hiv...转载 2019-05-09 17:42:26 · 2548 阅读 · 0 评论 -
hive 常见的函数
hive函数之数学函数round(double d)--返回double型d的近似值(四舍五入),返回bigint型;round(double d,int n)--返回保留double型d的n位小数double型近似值(四舍五入);floor(double d)--返回<=d的最大bigint值;ceil(double d)--返回>=d的最小bigint 值;...转载 2019-05-10 10:18:03 · 520 阅读 · 0 评论 -
hive 行列转换的含义解释
1、行转列所谓的行转列就是将多行拼接成一行按照某一字段进行聚合,将汇总的字段集中在某一个新生成的字段中,常见的就是collect_set()2、列转行所谓列转行就是将一行转换成多行将某个字段按照某一原则将这个字段拆分成多个数据,每个数据单独与原来其他字段组合成一条记录,lateral view explode(Array)一、列转行(对某列拆分,一列拆多行)使...转载 2019-07-23 15:43:29 · 999 阅读 · 0 评论 -
hive 常用到的数学统计函数
avg(col)--指定行的值的平均值;avg(distinct col)--排重后的值的平均值;min(col)--指定行的值的最小值;max(col)--指定行的值的最大值;variance(col)--返回col 中一组数值的方差;var_pop(col)---返回col 中一组数值的方差;var_samp(col)--返回col 中一组数值的样本方差;stdde...原创 2019-08-12 13:16:34 · 1512 阅读 · 0 评论 -
hive 中tab分隔符导致的数据异常
1.在hive建表时,如果使用tab \t作为分隔符, 一定要保证各个字段里没有该字符,不然会顺延数据;2.如果是其他分隔符分隔,但是字段里仍然含有\t tab 分隔符,在使用select数据时仍然会出现数据顺延,所以也要对数据去除这个特殊符号select description as cc0,description as cc1,description as cc2,descriptio...原创 2019-09-29 21:32:00 · 3497 阅读 · 0 评论 -
hive sql 时间递归写法
select a.p_day,0 fuv,0 vv,0 as fuv_sec,0 as vv_sec,count(distinct b.uid) fuv_sev,sum(b.vv) vv_sevfrom(select p_day,uid,sum(vv)vvfrom default.t_1where p_day>=20180706 and p_day<=20180719and ...原创 2018-08-16 11:54:20 · 6056 阅读 · 0 评论 -
Hive 报错
set hive.auto.convert.join=true;set hive.optimize.skewjoin=true;这两个参数是用于优化数据倾斜的,但是也是会有问题ClassCastException org.apache.hadoop.hive.ql.exec.ConditionalTask cannot be cast to org.apache.hadoop.hive....原创 2018-12-04 11:49:49 · 747 阅读 · 0 评论 -
hive的一个小坑
对于hive客户端,不使用转义也能执行,但是在脚本里可能就会报错,而且,报错内容不易察觉解决:增加一个转义 \原创 2018-11-01 16:30:15 · 176 阅读 · 0 评论 -
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask
hive> select count(1) from customer;Query ID = hive_20151113120000_368645da-6763-4ca3-a774-8961d490c0b0Total jobs = 1Launching Job 1 out of 1Status: Running (Executing on YARN cluster with App...转载 2018-10-16 09:40:30 · 5305 阅读 · 0 评论 -
hive中的日期处理法
1.日期比较函数: datediff语法: datediff(string enddate,string startdate) 返回值: int 说明: 返回结束日期减去开始日期的天数。 举例:hive> select datediff('2016-12-30','2016-12-29');12.日期增加函数: date_add语法: date_add(string st...转载 2018-08-17 14:25:11 · 6727 阅读 · 0 评论 -
hive 卡在stage99%往往是因为数据发生了倾斜
在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀的...转载 2018-08-16 16:09:53 · 12248 阅读 · 1 评论 -
hive 常用函数大全
数学函数 Return Type Name (Signature) Description DOUBLE round(DOUBLE a) Returns the rounded BIGINT value of a. 返回对a四舍五入的BIGINT值 DO...转载 2018-08-14 19:32:54 · 334 阅读 · 0 评论 -
hive 只有map没有reducer 的优化
hive中在做查询时,经常会碰到这种问题,任务只起map不起reduce;环境:hive 100出头的节点7T左右的内存basic表有300-400个分区,总数据量在6亿-7亿;如下sql:select * from basic_sum where user_log_acct='abcd';这个sql只会起一个job,这个job只有map,没有reduce;输入数...转载 2018-08-02 10:59:19 · 2977 阅读 · 0 评论 -
计算常见错误
1. Application Master 无法访问 点击application mater 链接,出现 http 500 错误,java.lang.Connect.exception: 问题是由于设定web ui时,50030 端口对应的ip地址为0.0.0.0,导致application master 链接无法定位。 解决办法: yarn-site...转载 2018-08-01 13:17:43 · 326 阅读 · 0 评论 -
HIVE 内存溢出常见问题
MapReduce作业运行过程中内存溢出错误分类1、Mapper/Reducer阶段JVM内存溢出(一般都是堆)1)JVM堆(Heap)内存溢出:堆内存不足时,一般会抛出如下异常:第一种:“java.lang.OutOfMemoryError:” GC overhead limit exceeded;第二种:“Error: Java heapspace”异常信息;第三种:“ru...转载 2018-08-01 11:15:19 · 34850 阅读 · 2 评论 -
hive 常见优化
Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具。使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别,所以需要去掉原有关系型数据库下开发的一些固有思维。基本原则:1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段select ... from Ajoin Bon...转载 2018-08-01 09:16:38 · 280 阅读 · 0 评论 -
hive percentile和percentile_approx 计算千分数
1、hive 计算千分位数:percentile函数和percentile_approx函数:其使用方式为percentile(col, p)、percentile_approx(col, p,B), .返回col列p分位上的值。B用来控制内存消耗的精度。实际col中distinct的值<B返回的时精确的值。其中percentile要求输入的字段必须是int类型的,而percent...转载 2018-07-26 10:38:29 · 77108 阅读 · 2 评论 -
hive 窗口函数高级使用
本文介绍了用于窗口函数和分析函数的Hive QL增强功能。所有窗口和分析函数操作都按照SQL标准。 当前版本支持以下窗口函数和分析函数:1 窗口函数窗口函数 描述 LAG() LAG()窗口函数返回分区中当前行之前行(可以指定第几行)的值。 如果没有行,则返回null。 LEAD() LEAD()窗口函数返回分区中当前行后面行(可以指定第几行)的值。 如果没有行,...转载 2018-07-19 20:06:34 · 1019 阅读 · 0 评论 -
hive中的笛卡尔积
Hive本身是不支持笛卡尔积的,不能用select T1.*, T2.* from table_1, table_2这种语法。但有时候确实需要用到笛卡尔积的时候,可以用下面的语法来实现同样的效果:select T1.*, T2.* from(select * from table1) T1join(select * from table2) T2on 1=1;其中on 1...转载 2018-08-27 16:14:22 · 21000 阅读 · 0 评论 -
hive sql 在多个sql union all 时 优化方式
前面提到了hive.exec.parallel可以控制一个sql中多个可并行执行的job的运行方式.当hive.exec.parallel为true的时候,同一个sql中可以并行执行的job会并发的执行.而参数hive.exec.parallel.thread.number就是控制对于同一个sql来说同时可以运行的job的最大值,该参数默认为8.此时最大可以同时运行8个job.我找了个j...转载 2018-08-23 16:09:29 · 7376 阅读 · 0 评论 -
hive 基本的参数调优
https://blog.csdn.net/zhong_han_jun/article/details/50814246https://blog.csdn.net/zhong_han_jun/article/details/50814246比较实用原创 2018-09-21 16:35:19 · 207 阅读 · 0 评论 -
yarn资源管理优先级设置
作业提交到的队列:mapreduce.job.queuename作业优先级:mapreduce.job.priority,优先级默认有5个:LOW VERY_LOW NORMAL(默认) HIGH VERY_HIGH 1、静态设置 1.1 Pig版本SET mapreduce.job.queuename root.etl.distcp;SET mapreduce.job.pri...转载 2018-09-26 18:07:01 · 4894 阅读 · 2 评论 -
hive 数据倾斜的常见处理方式
1.什么是数据倾斜?数据倾斜主要表现在,map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完。2.常见容易出现数据倾斜的操作? 数据...转载 2018-09-26 16:50:21 · 471 阅读 · 0 评论