HiveSQL经典优化案例一: 1.1 将要执行的查询(执行了 1个多小时才出结果): SELECT dt as DATA_DATE,STRATEGY,AB_GROUP,SOURCE, count 1.4 先看每个字段将会有多少分区(因为 Hive 表分区也不宜过多,一般一个查询语句涉及到的 hive分区 应该控制在2K内) jdbc:hive2://ks-hdp-master-01.dns.rightpad 1.6 基于新表执行查询(执行5分钟出结果): ? HiveSQL经典优化案例二: 问题描述:一个复杂的SQL,查询执行一段时间后报错:基本上是查不出来; 分析函数对于大表来说不是 hive的强项,这个时候我们将其分解成很多子集,并且合理利用 hive HiveSQL经典优化案例三: 如下SQL,用到了 PERCENTILE_APPROX 函数,问题描述:如下SQL,用到了 PERCENTILE_APPROX 函数,个人初步分析认为:由于用到该函数的次数太多
本文中介绍了hive中数据类型知识点,包含: 基本数据类型 复杂数据类型 隐式类型转换 显式类型转换 Hive基本数据类型 数值型 类型 说明 TINYINT 1个字节,-128~127 SMALLINT 复杂数据类型 数据array Syntax: ARRAY<data_type> Array("hadoop", "hive", "spark") array[1]="hive" 映射map Syntax : MAP<primitive_type, data_type> Map(1:"hadoop", 2:"hive") map[1]="hadoop" 结构体struct Syntax: STRUCT<col_name : data_type [COMMENT col_comment], …> Struct(a:5, b:"hive") struct.a=5 联合体uniontype UNIONTYPE<int, double <int>, col2 map<string,int>, col3 struct<a:string,b:int>, col4 uniontype<string,int> ) 隐式类型转换 hive
Hive综合案例 本案例对视频网站的数据进行各种指标分析,为管理者提供决策支持. age 视频年龄 视频在平台上的整数天 category 视频类别 上传视频指定的视频分类 length 视频长度 整形数字标识的视频长度 views 观看次数 视频被浏览的次数 rate 视频评分 满分5分 job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(NullWritable.class); //本案例中没有 0:1);; } } 四、准备工作 1、 创建 hive 表 创建表:youtubevideo_ori,youtubevideo_user_ori 创建表:youtubevideo_orc views DESC) AS rn FROM youtubevideo_category where categoryId = "Music" )t where t.rn <= 10; 5、
列转行 5. 综合练习 6. 查询顾客的购买明细及月购买总额 7. 将每个顾客的cost按照日期进行累加 8. 求明细,以及每个月有哪些顾客来过 9.
介绍Hive查询中的行列转换的用法 1. 案例一:求数学成绩比语文成绩好的学生的ID (1) 需求分析 现有 hive 表 score, 内容如下: hive> select * from score; 1 1 yuwen 43 2 1 shuxue 55 3 2 yuwen 77 4 2 shuxue 88 5 3 yuwen 98 6 3 shuxue 65 其中字段意义: t2中的数据: 1 43 55 2 77 88 3 98 65 --(3) SELECT sid FROM t2 WHERE shuxue > yuwen; 结果: 1 2 2.案例二 :销售表的行列转换 (1) 需求 现有hive表sales,内容如下: hive> select * from sales; sales.y sales.season sales.sale 1991
---- 介绍Hive查询中数值累加的思路的方法 1. 需求分析 现有 hive 表 record, 内容如下: hive> select * from record; OK A 2015-01 5 A 2015-01 15 B 2015-01 5 A 2015-01 8 B 2015-01 25 A 2015-01 5 A 2015-02 4 A 2015-02 6 B 2015-02 10 B 2015-02 5 A 2015-03 16 A 2015-03 22 B 2015-03 23 B 2015 方法二:使用Hive窗口函数max()、sum() select userid, month, count, sum(count) over(partition by userid order by
sc(Sno int,Cno int,Grade int) 11 row format delimited fields terminated by ','; 12 13 # 查看有哪些表 14 hive 数据准备 相关数据 1 [yun@mini01 exercise]$ pwd 2 /app/software/hive/exercise 3 [yun@mini01 exercise]$ ll /app/software/hive/exercise/ 4 total 12 5 -rw-rw-r-- 1 yun yun 81 Jul 18 17:44 course.dat 6 -rw-rw-r # 数据导入 6 0: jdbc:hive2://mini01:10000> load data local inpath '/app/software/hive/exercise/course.dat 数据准备 1 [yun@mini01 exercise2]$ cat /app/software/hive/exercise2/a.dat 2 1,a 3 2,b 4 3,c 5 4,d
Import 数据到指定 Hive 表中 注意:先用 export 导出后,再将数据导入。 hive (default)> import table student2 partition(month='201709') from '/user/hive/warehouse/export/student .txt; Hive Shell 命令导出 基本语法:(hive -f/-e 执行语句或者脚本 > file) [hadoop@hadoop102 hive]$ bin/hive -e 'select * from default.student;' >/opt/module/datas/export/student4.txt; 5.Export 导出到 HDFS 上 (defahiveult)> 只能删除管理表,不能删除外部表中数据 hive (default)> truncate table student;
数据说明 (1) dept表 hive> select * from dept; # deptno(部门编号) dname(部门名称) loc(部门所在地区) 10 SALES CHICAGO 40 OPERATIONS BOSTON (2) emp表 hive select count(distinct empno) from emp; # 14 (2) 查询总共有多少个职位 select count(distinct job) from emp; # 5 hiredate) as min_date from emp) tmp on emp.hiredate = tmp.min_date; # 结果 SMITH 1980-12-17 # 注意,以下SQL在hive 中不能执行 select ename from emp where hiredate = (select min(hiredate) from emp); (5) 统计出每个岗位的最高工资和平均工资
不明就里的读者可以看上一篇: Hive 的入门级 Group By 全案例 昨晚发文之后,有读者陆陆续续在星球发问了,脚本到底该怎么写? 环境: Hive: 2.7.7 Oracle SQL Developer Cloudera JDBC Driver 案例 - 1 : Group by 的常规化应用 select schema_id image 案例 - 2 : Group by 之 Grouping Sets 应用 select schema_id , type_desc , count(object_id 案例 - 3 : Group by 之 with cube select schema_id , type_desc , count(object_id) as object_count type_desc grouping sets((schema_id,type_desc),schema_id,type_desc,()) order by schema_id ,type_desc 案例
题目要求 现有hive表temp,其中只有一个字段(temp_record string),每一行代表某一天的气温,比如,2014010114代表,2014年1月1日的气温为14度,表中数据如下: hive 2010010216 2010010317 2010010410 2010010506 2015010649 2015010722 2015010812 2015010999 2015011023 要求:用hive --(1) create table temp_column as SELECT substring(temp_record, 1, 4) year, substring(temp_record, 5, 0105 29 1 2001 0101 16 2 2001 0102 12 3 2001 0104 11 4 2001 0103 10 5
[watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU2hvd01lQUk=,size_20,color_FFFFFF,t_70,g_se,x_16 Hive会自动加载 conf/hive-site.xml 配置文件,官方在 conf/hive-default.xml.template 提供了一个模板文件,里面是 Hive 加载不到 hive-site.xml 以上就是Hive的完整搭建过程,小伙伴们就可以欢快地开始使用Hive了。 2.Hive应用案例 本案例对视频网站的数据进行各种指标分析,为管理者提供决策支持。 age 视频年龄 视频在平台上的整数天 category 视频类别 上传视频指定的视频分类 length 视频长度 整形数字标识的视频长度 views 观看次数 视频被浏览的次数 rate 视频评分 满分5分 FROM youtubevideo_category WHERE categoryid = "music" )t WHERE t.rn <= 10; 5)
数据说明 (1) student表 hive> select * from student; # 学生ID 学生姓名 性别 年龄 所在系 # sid sname 95013 Matthew male 21 CS 95014 Nicholas female 19 CS ...... (2) course表 hive Chemistry 6 Biology (3) sc表 hive> select * from sc; # 学生ID 课程ID 成绩 # sid cid <1> 查询全体学生的学号与姓名 select sid, sname from student; <2> 查询选修了课程的学生姓名 select distinct sid from sc; (2) hive > 查询1号课程的最高分数 select cid, max(score) max_score from sc where cid = '1' group by cid; /* 1 98 */ <5>
熟悉 sql server 一定不陌生,其实就是从 sql server 导了一张系统表 sys.objects 到 Hive 里面。 具体方法可以参考这里: 使用 Sqoop 将 30W+ MySQL 数据导入 Hive 这是 Hive 的第一篇公开文,讲解 group by 用法。 其余的文章存着,大家热情起来了,我再慢慢放。 扯远了,回归正题,这里是 5 道 Hive 的 group by 应用题,大家有兴趣先做着。我会在星球里公布正式答案。 已知表结构如下: ? by 子选项案例。 看这里: Spark SQL 与 Hive 的第一场会师 Spark 高难度对话 SQL Server 后记 周末两三事儿:大数据专栏以及百题SQL学习营
首先,我们先来看下Hive的bin文件夹的目录: ? 此次用到的为hiveserver2和beeline 1. 启动beeline(hive自带的JDBC访问的客户端) [bigdata@hadoop001 hive]$ bin/beeline Beeline version 1.2.1 by Apache Hive connect jdbc:hive2://hadoop001:10000(回车) Connecting to jdbc:hive2://hadoop001:10000 Enter username for jdbc:hive2://hadoop001:10000: bigdata(回车) Enter password for jdbc:hive2://hadoop001:10000: (直接回车) Connected to: Apache Hive (version 1.2.1) Driver: Hive JDBC (version 1.2.1) Transaction isolation: TRANSACTION_REPEATABLE_READ
@ 目录 基本数据类型 集合数据类型 案例实操 基本数据类型 ? ? 对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。 集合数据类型 ? Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。 案例实操 假设某表有如下一行,我们用JSON格式来表示其数据结构。 在Hive下访问的格式为 { "name": "songsong", "friends": ["bingbing" , "lili"] , //列表Array, "
JVM重用是Hadoop调优参数的内容,其对Hive的性能具有非常大的影响,特别是对于很难避免小文件的场景或task特别多的场景,这类场景大多数执行时间都很短。 </description> </property> 我们也可以在hive当中通过 set mapred.job.reuse.jvm.num.tasks=10; 这个设置来设置我们的
-5.1.26-bin.jar(或其他jar版本)放在hive目录下的lib文件夹 3.配置hive环境变量,HIVE_HOME=F:\hadoop\apache-hive-2.1.1-bin 4.hive (1)创建配置文件 $HIVE_HOME/conf/hive-default.xml.template -> $HIVE_HOME/conf/hive-site.xml $HIVE_HOME/conf --修改的配置--> 2 3 <property> 4 5 <name>hive.metastore.warehouse.dir</name> 6 7 <! 在数据库中生成对应的 hive 数据库 ? 启动Hive:hive ? -------------------------------------------------------------- 创建表 以及 查询案例 hive上创建表: CREATE TABLE testB
如果HIVE表中的日期是以字符串形式进行存储,那如何计算两个日期相差天数呢?
比如为了将授权应用于Hive实体,如DB,Table或Columns,你必须为Hive服务安装Ranger Plugin。 ,因此Ranger的Hive Plugin实际上是Kafka中“ATLAS_HOOK” Topic的Producer 要使上面两个操作都能执行,需要在Ranger中设置策略以确保hive用户可以写数据到 Kafka的ATLAS_HOOK Topic中,同时hive用户需要有权限在Solr中创建索引并写入数据到HDFS,假设Hive的模拟(Impersonation)已经关闭。 一旦Audit事件到达Solr并且正确的创建了索引,管理员可以在Ranger web UI的Audits页面查看到该审计信息,图中所示为5. 这样如果Ranger服务挂了,客户端如Hive的授权依旧可以正常执行。等Ranger服务恢复,Hive插件则会恢复定期去Ranger同步策略。