![](https://img-blog.csdnimg.cn/2020052914571131.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Hive
以实践为基础,对hive的一些语法以及实例进行学习
小码良
无聊但有趣
展开
-
hive自定义函数udtf(临时和永久函数)
用户定义表生成函数UDTF(user-defined table-generating function,UDTF) 操作作用于单个数据行,并且产生多个数据行-------一个表作为输出。lateral view explore()1、编写自定义的udtf函数编程思路:继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,实现initialize,process, close三个方法。UDTF首先会调用initialize方法,此方法返回UDT原创 2020-05-29 14:33:52 · 774 阅读 · 0 评论 -
hive自定义函数udf(临时和永久函数)
hive自定义函数udf和udtf一、UDF(user defined functions)用于处理单行数据,并生成单个数据行1、自定义UDF 的步骤:1.1、编写自定义的UDF函数继承"org.apache.hadoop.hive.ql.exec.UDF"类至少实现一个evaluate()方法,evaluate函数支持重载例子:import org.apache.hadoop.hive.ql.exec.UDF;import java.text.ParseException;import原创 2020-05-28 17:40:16 · 1907 阅读 · 0 评论 -
hive实操六(用户标签连接查询)
用户标签连接查询数据: tags_info 表:字段(一个): tags1,2,31,22,3lab_info表:字段(两个):Id lab1 A2 B3 C根据两个表的数据,期望编写sql实现如下结果:ids tags1,2,3 A,B,C1,2 A,B2,3 B,C所用SQL: -- 建表和加载数据create table tags_info( tags string);load dat原创 2020-05-25 19:23:30 · 623 阅读 · 0 评论 -
hive的udtf函数一(lateral view explode源码解析)
hive的udtf函数二 (lateral view explode源码分析)Lateral view与UDTF函数一起使用,UDTF对每个输入行产生0或者多个输出行。Lateral view首先在基表的每个输入行应用UDTF,然后连接结果输出行与输入行组成拥有指定表别名的虚拟表。测试SQL:explain select c1 as mlike from person_infolateral view explode(likes)t1 as c1;下图是上面SQL的hive执行任务:对每一步进行原创 2020-05-25 18:51:13 · 950 阅读 · 0 评论 -
hive的udtf函数一(lateral view explode)
基础介绍:1.explode函数explode函数以array类型数据输入,然后对数组中的数据进行迭代,返回多行结果,一行一个数组元素值ARRAY函数是将一列输入转换成一个数组输出。例如:SELECT explode(array(1,2,3)) AS element;OKelement123Time taken: 0.327 seconds, Fetched: 3 row(s)数据准备:1 zhang3 "sing","tennis","running" "beijing":"d原创 2020-05-25 16:47:04 · 902 阅读 · 0 评论 -
hive中的拼接函数(concat,group_concat,concat_ws,collect_set)
1、concatconcat() 函数用于将多个字符串连接成一个字符串。concat(string s1, string s2, string s3,…)表示通过s1、s2和s3连接一起举例:+----+--------+| id | name |+----+--------+| 1 | city |+----+--------+CONCAT(id,’:’,name) = 1:city2、concat_wsconcat_ws() 指定参数之间的分隔符concat_ws(s原创 2020-05-25 14:41:14 · 16670 阅读 · 0 评论 -
hive实操五(每个用户连续登陆的最大天数)
每个用户连续登陆的最大天数数据:1,2019-08-011,2019-08-021,2019-08-032,2019-08-012,2019-08-023,2019-08-013,2019-08-034,2019-07-284,2019-07-294,2019-08-014,2019-08-024,2019-08-03期望结果:uid cnt_days 1 32 23 14 3所用SQL:create ta原创 2020-05-22 14:34:55 · 691 阅读 · 0 评论 -
hive实操四(订单及订单类型行列互换)
数据:111 N 10:00111 A 10:05111 B 10:10期望结果:order_id order_type_1 order_type_2 order_time_1 order_time_2 111 N A 10:00 10:05 111 A B 10:05 10:10所用SQLcreate table order_type(o原创 2020-05-21 18:32:10 · 195 阅读 · 0 评论 -
Hive分析窗口函数一(LAG,LEAD,FIRST_VALUE,LAST_VALUE)
数据准备:cookie1,2015-04-10 10:00:02,url2cookie1,2015-04-10 10:00:00,url1cookie1,2015-04-10 10:03:04,1url3cookie1,2015-04-10 10:50:05,url6cookie1,2015-04-10 11:00:00,url7cookie1,2015-04-10 10:10:00,url4cookie1,2015-04-10 10:50:01,url5cookie2,2015-04-10原创 2020-05-21 15:53:30 · 201 阅读 · 0 评论 -
hive实操三(每班前三名和前三名按名次排序的一次的分差)
编写sql语句实现每班前三名,分数一样并列,同时求出前三名 按名次排序的一次的分差数据:1 1901 902 1901 903 1901 834 1901 605 1902 666 1902 237 1902 998 1902 679 1902 87结果如下:1901 1 90 1 1 901901 2 90 2 1 01901 3 83 3 1 -71902 7 99 1 1 991902 9 87 2 2 -121902 8 67 3 3 -20SQL如下:cr原创 2020-05-21 15:38:26 · 727 阅读 · 0 评论 -
hive实操二(连续7天登录的总人数)
求连续7天登录的总人数数据:1 2019-07-12 11 2019-07-13 11 2019-07-14 11 2019-07-15 11 2019-07-16 11 2019-07-17 11 2019-07-18 12 2019-07-11 12 2019-07-12 12 2019-07-13 02 2019-07-14 12 2019-07-15 12 2019-07-16 02 2019-07-17 12 2019-07-18 03 2019-07-11 1原创 2020-05-20 18:49:26 · 1038 阅读 · 0 评论 -
hive实操一(最大单月访问次数和用户月累计访问次数)
编写sql实现每个用户截止到每月为止的最大单月访问次数和累 计到该月的总访问次数数据:A,2015-01,5A,2015-01,15B,2015-01,5A,2015-01,8B,2015-01,25A,2015-01,5A,2015-02,4A,2015-02,6B,2015-02,10B,2015-02,5A,2015-03,16A,2015-03,22B,2015-03,23B,2015-03,10B,2015-03,1每个用户截止到每月为止的最大单月访问次数和累计原创 2020-05-20 18:39:54 · 1268 阅读 · 0 评论 -
大数据踩过的坑(一)hive union
大数据踩过的坑(一)hive union今天朋友问我一个关于hive的问题,是想将两个筛选条件的值加起来,然后就想到了用union,因为最近用的MySQL比较多,就直接写了union,朋友说hive里没有union,只有union all,但是我这边用union测试的是没有问题的,然后就上网搜了一下,列了下面几点合并前的两个SQLselect count(distinct uid) as ct1from userswherestatus=1;selectcount(distinct u原创 2020-05-20 18:00:06 · 2127 阅读 · 0 评论 -
hive常用函数之UDF函数(基础函数)(一)
1、关系运算等值比较: =不等值比较: <>小于比较: <大于比较: >大于等于比较: >=空值判断: IS NULL非空判断: IS NOT NULLLIKE比较: LIKE2、数学运算加法操作: +减法操作: -乘法操作: *除法操作: /取余操作: %位与操作: &位或操作: |位异或操作: ^位取反操作: ~3、逻...原创 2020-03-13 16:50:15 · 2458 阅读 · 0 评论 -
hive常用函数之条件判断函数IF,COALESCE,CASE
1.If函数:if和case差不多,都是处理单个列的查询结果语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)返回值: T说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull举例:if(条件表达式,结果1,结果2)相当于java中的三目运算符,只是i...转载 2020-03-13 15:02:31 · 2994 阅读 · 0 评论 -
数据仓库之拉链表
参考资料:http://cxy7.com/articles/2018/05/25/1527237216341.htmlhttp://cxy7.com/articles/2017/09/15/1505474223814.html#b3_solo_h2_2http://www.aboutyun.com/thread-12831-1-1.html什么是拉链表? 拉链表是针对数据仓库设计中...原创 2019-07-24 08:55:08 · 582 阅读 · 0 评论 -
添加hdfs上采集的历史数据 以文件名作为hive表的分区名
测试数据准备sudo -u hdfs hadoop fs -mkdir /user/zll/20190722/sudo -u hdfs hadoop fs -mkdir /user/zll/20190723/sudo -u hdfs hadoop fs -put 2019072201.txt /user/zll/20190722/sudo -u hdfs hadoop fs -put 2...原创 2019-07-25 08:39:09 · 339 阅读 · 0 评论 -
Hive的几种常见的压缩格式
一.测试背景工作中想把历史的结构化数据到Hive中进行查询,由于数据较大,需要进行压缩,根据Hive官方提供的几种压缩格式分别进行写入,读取,OLAP计算的性能测试,以求找到最好的压缩格式。二.测试方法概述1、数据来源:采用生产上数据抽样,大小为100G。原始日志格式为textfile文件(标准JSON)。2、测试平台:公司Ambari测试平台,物理内存100G。3、测试方法:将tex...原创 2019-07-24 09:07:14 · 1552 阅读 · 0 评论