hive etl
仰望星空的我
仰望星空,脚踏实地。
展开
-
HIVE 窗口及分析函数 应用场景
窗口函数应用场景:(1)用于分区排序(2)动态Group By(3)Top N(4)累计计算(5)层次查询一、分析函数用于等级、百分点、n分片等。函数 说明 RANK() 返回数据项在分组中的排名,排名相等会在名次中留下空位 DENSE_RANK() 返回数据项在分组中的排名,排名相等会在名次中不会留下空位 NTILE() ...转载 2019-06-14 14:51:26 · 245 阅读 · 0 评论 -
Hive 高级应用及分析窗口函数
Hive高级应用1、支持复杂数据类型array,map,struct支持对应复杂数据类型的遍历和查询2、支持视图3、函数3.1、丰富的内置函数3.2、支持自定义Java处理类,以jar文件的方式添加至Hive,定义临时函数关联处理类,对数据进行自定义处理3.3、Json数据的解析和操作get_json_object,json_tuple3.3、通过Transform在HQL中...转载 2019-06-14 15:03:39 · 335 阅读 · 0 评论 -
Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK
Hive版本为 apache-hive-0.13.1注意: 序列函数不支持WINDOW子句。(什么是WINDOW子句,点此查看前面的文章)数据准备:cookie1,2015-04-10,1 cookie1,2015-04-11,5 cookie1,2015-04-12,7 cookie1,2015-04-13,3 cookie1,2015-04-14,2 cook...转载 2019-06-14 15:11:20 · 137 阅读 · 0 评论 -
Hive分析窗口函数(三) CUME_DIST,PERCENT_RANK
Hive版本为 apache-hive-0.13.1数据准备:d1,user1,1000 d1,user2,2000 d1,user3,3000 d2,user4,4000 d2,user5,5000 CREATE EXTERNAL TABLE lxw1234 ( dept STRING, userid string, sal INT ) ROW FORM...转载 2019-06-14 15:06:36 · 1144 阅读 · 0 评论 -
Hive分析窗口函数(四) LAG,LEAD,FIRST_VALUE,LAST_VALUE
Hive版本为 apache-hive-0.13.1数据准备:cookie1,2015-04-10 10:00:02,url2 cookie1,2015-04-10 10:00:00,url1 cookie1,2015-04-10 10:03:04,1url3 cookie1,2015-04-10 10:50:05,url6 cookie1,2015-04-10 11:0...转载 2019-06-14 15:09:32 · 233 阅读 · 0 评论 -
Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP
GROUPING SETS,GROUPING__ID,CUBE,ROLLUP这几个分析函数通常用于OLAP中,不能累加,而且需要根据不同维度上钻和下钻的指标统计,比如,分小时、天、月的UV数。Hive版本为 apache-hive-0.13.1数据准备:2015-03,2015-03-10,cookie1 2015-03,2015-03-10,cookie5 2015...转载 2019-06-14 15:12:05 · 202 阅读 · 0 评论 -
impala刷新hive数据shell脚本
#!/bin/bashsource job.propertiesimpalaHost=$1databaseName=$2tableName=$3echo "[INFO]: Hive Database :------> ${databaseName}"echo "[INFO]: Table Name :---------> ${tableName}"echo "...转载 2019-06-14 17:04:07 · 1153 阅读 · 2 评论 -
Hive 正则匹配函数
正则匹配字符解释:^ 表示开头 $ 表示结尾 . 表示任意字符 * 表示任意多个1、元字符匹配(.) 表示匹配除换行符以外的任意字符。(\w) 表示匹配字母、下划线、数字或汉字(\\W)。(\d) 表示匹配数字(\s) 表示匹配任意的空白符([ ]) 表示匹配方括号中任一字符([^匹配内容]) 表示匹配方括号中任一字符2、位置匹配(^) 表示匹配字...转载 2019-06-20 17:39:34 · 8592 阅读 · 0 评论 -
git 合并远程分支
假设远程分支 dev-by-wbw 本地分支dev-by-wgg在本地新建一个与远程的分支dev-by-wbw相同(被合并的版本)的分支dev-by-wbwgit checkout - b origin/dev-by-wbw将远程分支代码pull到本地,然后切回本地自己的分支(或master分支)git pull origin dev-by-wbwgit checkout ...转载 2019-06-11 16:46:52 · 113 阅读 · 0 评论 -
Hive 字符串函数
下表为Hive内置的字符串函数,具体的用法可以参见本文的下半部分。返回类型 函数名 描述 int ascii(string str) 返回str第一个字符串的数值 string base64(binary bin) 将二进制参数转换为base64字符串 string concat(string|binary A, string|binary...转载 2019-06-25 15:11:12 · 3317 阅读 · 2 评论 -
Hive 时间日期处理总结
select day -- 时间 ,date_add(day,1 - dayofweek(day)) ...转载 2019-06-25 15:12:23 · 315 阅读 · 0 评论 -
Hive窗口函数Over和排序函数Rank
目录1、聚合函数+over2、partition by子句3、order by子句4、★window子句(里面包含) - PRECEDING:往前 - FOLLOWING:往后 - CURRENT ROW:当前行 - UNBOUNDED:起点5、★窗口函数中的序列函数:包含NTILE(n),row_number、rank、dense_rank简介本文主要介绍hive中的窗口函数....转载 2019-06-25 17:50:56 · 665 阅读 · 0 评论 -
Hive 脚本执行
继上篇DDL中load的数据继续进行脚本操作。hive执行脚本hive -e “sql语句”会将查询的结果打印在控制台上。hive -e “sql语句” >> xxx会将查询的结果重定向到xxx文件中,会显示OK和抓取的数据条数hive -S -e “sql语句” >> xxx会将查询的结果重定向到xxx文件中,不会显示OK和抓取的...转载 2019-06-18 14:06:29 · 181 阅读 · 0 评论 -
hive脚本执行方式
hive脚本的执行方式hive脚本的执行方式大致有三种:hive控制台执行; hive -e "SQL"执行; hive -f SQL文件执行; 参考hive用法:1.1. hive控制台执行顾名思义,是进入hive控制台以后,执行sql脚本,例如:hive> set mapred.job.queue.name=pms;hive> select page...转载 2019-06-18 14:09:59 · 1581 阅读 · 0 评论 -
Impala 代替 hive COLLECT_SET函数的方式
背景之前是在HIVE上开发,GROUP BY 某些字段后,其他字段使用COLLECT_SET(ITEM)[0]的方式取相同字段值中的一个,而在Impala上没有COLLECT_SET函数。方案使用GROUP_CONCAT函数+SPLIT_PART函数替代## IMPALASELECT SCORE,SPLIT_PART(GROUP_CONCAT(NAME),',',1) FROM TE...转载 2019-07-01 16:20:02 · 3240 阅读 · 0 评论 -
Hive 行列转换
一、列转行(对某列拆分,一列拆多行)使用函数:lateral view explode(split(column, ',')) numeg: 如表:t_row_to_column_tmp 数据如下,对tag列进行拆分SQL代码:select id,tag,tag_new from t_row_to_column_tmplateral view explode(spl...转载 2019-07-01 16:28:45 · 148 阅读 · 0 评论 -
hivesql中的concat函数,concat_ws函数,concat_group函数之间的区别
一、CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串。使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为+----+--------+| id | name |+----+--------+| 1 | BioCyc |+----+--------+1、语法及使用特点:CONCAT(s...转载 2019-07-01 16:48:08 · 4001 阅读 · 0 评论 -
Hive常用日期格式转换
固定日期转换成时间戳select unix_timestamp('2016-08-16','yyyy-MM-dd') --1471276800select unix_timestamp('20160816','yyyyMMdd') --1471276800select unix_timestamp('2016-08-16T10:02:41Z', "yyyy-MM-dd'T'HH:mm:ss'...转载 2019-06-26 12:55:19 · 6530 阅读 · 0 评论 -
trunc()函数用法处理日期、数字类型数据
一、日期TRUNC函数为指定元素而截去的日期值。其具体的语法格式如下:TRUNC(date[,fmt])其中:date 一个日期值 fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去如果当日日期是:2011-3-181.select trunc(sysdate) from dual --2011-3-18 今天的日期为2011-3-182.sele...转载 2019-06-26 12:57:41 · 4494 阅读 · 0 评论 -
【Hive】日期从整形转为Date类型
在建表的时候我们常将日期字段设置为INT类型,将诸如20180601这样的数字值来表示日期,这样在做日期比较等操作时没有问题,但是要进行某些日期计算,就要先转成日期类型才能进行计算了,怎么转换呢?数据准备下面在Hive中先建一个表,含有一个INT类型的日期字段,插入两行数据。create table tb (dt INT);insert into tb values (2...转载 2019-06-26 13:00:43 · 3112 阅读 · 0 评论 -
字符串函数split、array_contains
1、split(string str, string regex)函数:TDW官方文档上的解释: 函数说明: Splits str around occurances that match 用法示例: SELECT split(‘ABCD:C:D:E’,’:’)[2] returns ‘D’.那么,是否可以按照多个字符进行分割呢,答案是可以的。在指定多个分隔...转载 2019-06-26 14:52:29 · 1731 阅读 · 0 评论 -
Hive日期格式转换用法
1.日期函数UNIX时间戳转日期函数: from_unixtime语法:from_unixtime(bigint unixtime[, stringformat])返回值: string说明: 转化UNIX时间戳(从1970-01-0100:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive> select from_unixtime(1323308943,'y...转载 2019-06-26 19:32:22 · 9582 阅读 · 0 评论 -
hive中partition如何使用
一、背景1、在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念。2、分区表指的是在创建表时指定的partition的分区空间。3、如果需要创建有分区的表,需要在create表的时候调用可选参数partitioned by,详见表创建的语法结构。二、技术细节1、一个表可以拥...转载 2019-06-24 17:51:06 · 568 阅读 · 0 评论 -
Hive分区partition详解
Hive分区更方便于数据管理,常见的有时间分区和业务分区。下面我们来通过实例来理解Hive分区的原理。一、单分区操作1.创建分区表create table t1( id int ,name string ,hobby array<string> ,add map<String,string>)p...转载 2019-06-24 17:53:58 · 1030 阅读 · 0 评论 -
Hive函数之行转列
介绍三种常用函数,空字段赋值,行转列,case when,一、NVL函数空字段赋值,语法:nvl(string1,replaceValue),当某值为空时调用,二、case when就相当于java中switch case,记得最后一定要加end,else就相当于java中的defalut举例:selectdept_id,sum(case sex when '...转载 2019-07-08 19:31:57 · 1124 阅读 · 0 评论 -
Hive修改表
Alter Table 语句它是在Hive中用来修改的表。语法声明接受任意属性,我们希望在一个表中修改以下语法。ALTER TABLE name RENAME TO new_nameALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])ALTER TABLE name DROP [COLUMN] column_name...转载 2019-07-03 15:26:25 · 128 阅读 · 0 评论 -
Hive常用命令与内容
1、创建普通表create table test(id string,name string)row format delimited fields terminated by ','stored as textfile;查看在HDFS上面储存的路径 hadoop fs -ls /user/hive/warehouse/test2、加载数据本地加载:load data loc...转载 2019-07-09 11:05:50 · 330 阅读 · 0 评论 -
hive多个left join执行计划顺序
先说明2点:1、leftjoin是逻辑操作符,只用于保证“数据正确”2、优化器才是最终决定执行顺序的地方,一般来说会按照你的意愿顺序去执行,但是并不完全能保证。回答你的问题:1.求教多个leftjoin怎么执行eg:select*fromaleftjoinbona.abid=b.baidleftjoinconc.cbid=b.bcid...转载 2019-07-10 10:34:56 · 11532 阅读 · 3 评论 -
Hive 执行计划
执行语句hive> explain select s.id, s.name from student s left outer join student_tmp st on s.name = st.name;结果,红色字体为我添加的注释hive> explain select s.id, s.name from student s left outer join stu...转载 2019-07-10 10:37:09 · 407 阅读 · 0 评论 -
如何每日增量加载数据到Hive分区表
加载数据数据加载到Hive分区表(两个分区,日期(20160316)和小时(10))中每日加载前一天的日志文件数据到表db_track.track_log1. 数据存储数据日志文件,放入某个目录下,每天日志文件放入同一个目录eg: 20160316 - 目录名称日志文件数据,每个小时生成一个文件,一天总共有二十四个文件eg: 20160318202. shell脚本编写...转载 2019-07-10 10:38:52 · 1739 阅读 · 0 评论 -
hive sql执行计划树解析
如下两个SQL语句,一般意义上大家都认为第二个执行更快,执行完大家就会发现第一个耗时149s,第二个耗时160s,可以说两个的执行计划近乎相同,有兴趣的同学可以看下下面的语法树。 注:等值连接,两者没什么差别;但是外连接,只有第二种能保证查询结果正确,因为外连接先执行join操作,reduce时候执行where操作 hql1: hive -e "use acorn_...转载 2019-07-10 11:05:34 · 915 阅读 · 0 评论 -
Hive修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作
Alter Table 语句Hive修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作它是在Hive中用来修改的表。语法声明接受任意属性,我们希望在一个表中修改以下语法。 ALTER TABLE name RENAME TO new_name ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ......转载 2019-07-18 10:05:33 · 322 阅读 · 0 评论 -
Hive 分区表和二级分区表的基本操作
Hive分区就是在HDFS上创建独立的文件夹,该文件夹下是该分区的所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择来查询所需要的指定分区,这样的查询效率会提高很多。1、引入分区表最终呈现的效果就是在HDFS上按照分区的目录存储文件:/user/hive/warehose/log/201801/01/dep...转载 2019-07-18 11:12:02 · 1444 阅读 · 0 评论 -
Hive总结2(分区+分桶+查询)
Hive是一个数据仓库 ,保存的半结构化数据 文本。Hive不支持:事务,不支持索引(但可以通过分桶实现快速的查询,hash)类似的分布的nosql(Not Only Sql数据库:hbase - Phoinex(凤凰)Hive的功能,就是做mapreduce。分区:就是在可控制的情况下,将数据放到不同的目录下。减小查询的范围。 并不能加快查询的速度。还是要查询所...转载 2019-07-18 11:25:49 · 1200 阅读 · 0 评论 -
Hive的分区表和分桶表的区别
1.Hive分区。是指按照数据表的某列或某些列分为多个区,区从形式上可以理解为文件夹,比如我们要收集某个大型网站的日志数据,一个网站每天的日志数据存在同一张表上,由于每天会生成大量的日志,导致数据表的内容巨大,在查询时进行全表扫描耗费的资源非常多。那其实这个情况下,我们可以按照日期对数据表进行分区,不同日期的数据存放在不同的分区,在查询时只要指定分区字段的值就可以直接从该分区查找。...转载 2019-07-18 11:46:55 · 185 阅读 · 0 评论 -
shell脚本判断hive表是否存在
#!/bin/bash#日志目录#shell判断表hive表是否存在#TABLE=库名.表名TABLE=dal.dal_mdn_communication_behaviorhive -e"desc $TABLE;" 2>&1 | grep 'Table not found'rtstatus=$?echo $rtstatusif [ $rtstatus -...转载 2019-07-16 14:42:14 · 2497 阅读 · 0 评论 -
Shell脚本执行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell判断hdfs文件目录是否存在
#!/bin/bashsource /etc/profile;################################################### Author: ouyangyewei ## ## Content: ...转载 2019-07-16 14:54:29 · 237 阅读 · 0 评论 -
在shell中判断hive查询记录数大小
用途: 根据查询到结果数量来判断,是否需要再执行下个脚本。1. 查询语句script.q脚本如下: select count(1) as count from test;2. shell脚本如下:这里注意hive语句需要包裹在``(左上角~按键)里面,然后可以把输出的结果赋值给一个变量。#!/bin/shcount=`beeline --silent=true --o...转载 2019-07-16 14:56:03 · 1672 阅读 · 1 评论 -
awk统计文本里某一列重复出现的次数
比如这样的场景:现在有一个文本,里面是这样的内容:NOTICE: 12-14 15:11:13: parser.* 6685 url=[http://club.pchome.net/thread_1_18_7283270___TRUE.html] get_tm=115 PAGE=15471[Z]:59066 css_tm=1043 css_res=0/4[0] CONT=3230[Z]:...转载 2019-07-16 14:58:26 · 9256 阅读 · 0 评论 -
hive 中的二级分区表和动态分区表
二级分区表/管理表:create table emp_part1(empno int,empname string,empjob string,mgrno int,birthday string,salary float,bonus float,deptno int)partitioned by (day string,hour string)r...转载 2019-07-18 19:23:02 · 675 阅读 · 0 评论