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 HiveSQL经典优化案例二: 问题描述:一个复杂的SQL,查询执行一段时间后报错:基本上是查不出来; 分析函数对于大表来说不是 hive的强项,这个时候我们将其分解成很多子集,并且合理利用 hive aid, t3.imei, t3.idfa, t3.udid, t3.event, t3.duration, t3.dt, t3.time_local, t3.hour, t3.source, HiveSQL经典优化案例三: 如下SQL,用到了 PERCENTILE_APPROX 函数,问题描述:如下SQL,用到了 PERCENTILE_APPROX 函数,个人初步分析认为:由于用到该函数的次数太多
Hive综合案例 本案例对视频网站的数据进行各种指标分析,为管理者提供决策支持. job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(NullWritable.class); //本案例中没有 0:1);; } } 四、准备工作 1、 创建 hive 表 创建表:youtubevideo_ori,youtubevideo_user_ori 创建表:youtubevideo_orc 3) 最后按照热度排序,显示前10条。 3) 统计对应类别(Music)中的视频热度。
分组统计,查出各部门中男女的个数: 3. 行转列: 4. 列转行 5. 综合练习 6. 查询顾客的购买明细及月购买总额 7. 将每个顾客的cost按照日期进行累加 8.
介绍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 其中字段意义: > yuwen; 结果: 1 2 2.案例二:销售表的行列转换 (1) 需求 现有hive表sales,内容如下: hive> select * from sales; sales.y sales.season 案例三:学生成绩表的列转行 (1) 需求 有如下学生成绩表score: id sname math computer english 1 Jed 34 58
---- 介绍Hive查询中数值累加的思路的方法 1. 需求分析 现有 hive 表 record, 内容如下: hive> select * from record; OK A 2015-01 5 A 2015-01 15 B 43 33 A 2015-03 38 81 38 B 2015-01 30 30 30 B 2015-02 15 45 30 B 2015-03 44 89 44 3. 方法二:使用Hive窗口函数max()、sum() select userid, month, count, sum(count) over(partition by userid order by
数据准备 相关数据 1 [yun@mini01 exercise]$ pwd 2 /app/software/hive/exercise 3 [yun@mini01 exercise]$ ll ]$ cat /app/software/hive/exercise/sc.dat 16 95001,1,81 17 95001,2,85 18 95001,3,88 19 95001,4,70 20 ://mini01:10000> set mapreduce.job.reduces = 2; 3 No rows affected (0.007 seconds) 4 0: jdbc:hive2: 数据准备 1 [yun@mini01 exercise2]$ cat /app/software/hive/exercise2/a.dat 2 1,a 3 2,b 4 3,c 5 4,d 6 7,y 7 8,u 8 [yun@mini01 exercise2]$ cat /app/software/hive/exercise2/b.dat 9 2,bb 10 3,cc 11 7,
hive (default)> import table student2 partition(month='201709') from '/user/hive/warehouse/export/student module/datas/export/student1' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' select * from student; (3) DELIMITED FIELDS TERMINATED BY '\t' select * from student; 3.Hadoop 命令导出到本地 hive (default)> dfs -get /user/hive/warehouse/student/month=201709/000000_0 /opt/module/datas/export/student3.txt; Hive Shell 命令导出 基本语法:(hive -f/-e 执行语句或者脚本 > file) [hadoop@hadoop102 hive]$ bin/hive -e 'select * from default.student
当查询数据复杂时,hive就会调用hadoop里的mapreduce,前提:开启hdfs和yarn服务。 ? 此时,看可视化工具: ? 已经成功运行
数据说明 (1) dept表 hive> select * from dept; # deptno(部门编号) dname(部门名称) loc(部门所在地区) 10 select count(distinct empno) from emp; # 14 (2) 查询总共有多少个职位 select count(distinct job) from emp; # 5 (3) by job order by count_emp desc; # 结果 job count_emp SALESMAN 4 CLERK 4 MANAGER 3 hiredate) as min_date from emp) tmp on emp.hiredate = tmp.min_date; # 结果 SMITH 1980-12-17 # 注意,以下SQL在hive from e2 where hire_year = 'first_half_year' group by loc order by count desc limit 1; /* CHICAGO 3
Hive 3中的事务表与非ACID表相当。Hive 3事务表中不需要分桶或排序。分桶不会影响性能。这些表与原生的云存储兼容。 Hive支持每个事务一个语句,该语句可以包含任意数量的行、分区或表。 出现Hive3连接消息,然后出现Hive提示符,用于在命令行中输入SQL查询。 3. 出现Hive 3连接消息,然后出现Hive提示符,用于在命令行中输入查询。 3. 将文件移动到名为andrena的目录/存储桶中的HDFS / S3中 ,然后将students.csv放入目录中。 3. 启动Hive Shell。 DEFAULT 确保存在一个值,该值在数据仓库卸载案例中很有用。 PRIMARY KEY 使用唯一标识符标识表中的每一行。 FOREIGN KEY 使用唯一标识符标识另一个表中的行。
默认情况下,执行 CREATE TABLE 语句会在 Hive 元存储中创建一个托管的 Apache Hive 3 表。您可以更改默认行为以使用旧的 CREATE TABLE 行为。 默认情况下,执行 CREATE TABLE 语句会在 Hive 元存储中创建一个托管的 Apache Hive 3 表。 Hive 3 表是符合 ACID 的事务表,仅对 ORC 格式的数据具有以下完整的 ACID 功能: 插入 更新 删除 使用符合 ACID 的事务表不会导致性能或操作过载,也不需要分桶。 在 hive-site.xml 的 HiveServer2 高级配置片段(安全阀)中,单击 + 并添加hive.server2.limit.connections.per.user属性。 3. 启动 Hive shell 并登录。 收集未分区表的表统计信息 mytable: ANALYZE TABLE mytable COMPUTE STATISTICS; 3.
这些类型的表是 Hive 3 及更高版本中默认的、符合 ACID 的表。 ACID 表默认位于/warehouse/tablespace/managed/hive 中。 Hive 3 支持 HDFS 访问控制模型,而不是基于hive.warehouse.subdir.inherit.perms参数设置的传统 Hive 权限继承。 3. 在 Hive 中创建表或数据库,然后使用 HDFS 文件系统命令手动修改 POSIX 权限。 3. 搜索 HiveServer2的hive-site.xml高级配置片段(安全阀) 3.
不明就里的读者可以看上一篇: 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 from temp_column; /* temp_index表中数据: 2001 0105 29 1 2001 0101 16 2 2001 0102 12 3 2001 0104 11 4 2001 0103 10 5 ...... */ --(3) select concat(year, day, temp) from temp_index
[watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU2hvd01lQUk=,size_20,color_FFFFFF,t_70,g_se,x_16 mysql-connector-java/8.0.21/mysql-connector-java-8.0.21.jar mv mysql-connector-java-8.0.21.jar lib 3) 以上就是Hive的完整搭建过程,小伙伴们就可以欢快地开始使用Hive了。 2.Hive应用案例 本案例对视频网站的数据进行各种指标分析,为管理者提供决策支持。 核心要做三件事情: 长度不够9的删掉 视频类别删掉空格 该相关视频的分割符 3)准备工作 (1)创建 Hive 表 创建表:youtubevideo_ori,youtubevideo_user_ori youtubevideo_user_orc: insert into table youtubevideo_user_orc select * from youtubevideo_user_ori; 3.
默认授权模式下,只有用户hive可以访问Hive。启动 Hive shell 的步骤,不要与 CDP 不支持的 Hive CLI 混淆,包括如何登录到集群。 SHOW DATABASES; CREATE TABLE students (name VARCHAR(64), age INT, gpa DECIMAL(3,2)); INSERT INTO TABLE /topics/hive_start_hive.html 使用密码启动 Hive 您可以使用 Beeline 命令启动 Hive shell,以作为 Apache Ranger 授权的最终用户查询 Hive SHOW DATABASES; CREATE TABLE students (name VARCHAR(64), age INT, gpa DECIMAL(3,2)); INSERT INTO TABLE /topics/hive_start_hive_as_authorized_user.html 运行 Hive 命令 您可以从集群中节点的命令行运行大多数将配置变量推送到 Hive SQL 脚本的 Hive
数据说明 (1) student表 hive> select * from student; # 学生ID 学生姓名 性别 年龄 所在系 # sid sname 95013 Matthew male 21 CS 95014 Nicholas female 19 CS ...... (2) course表 hive English 4 Physics 5 Chemistry 6 Biology (3) sc表 hive> select * from sc; <1> 查询全体学生的学号与姓名 select sid, sname from student; <2> 查询选修了课程的学生姓名 select distinct sid from sc; (2) hive 4 95012 4 95013 4 95015 4 95018 4 95019 5 95022 4 */ (3) hive的order by/sort by/distribute
spark SQL经常需要访问Hive metastore,Spark SQL可以通过Hive metastore获取Hive表的元数据。 但是如果要像hive一样持久化文件与表的关系就要使用hive,当然可以不启动hive程序使用spark提供的HiveContext类即可。 3.启动spark-shell时指定mysql连接驱动位置 spark集群模式 bin/spark-shell \ --master spark://intsmaze:7077 \ --executor-memory 语句进行操作) bin/spark-sql\ --master spark://intsmaze:7077 \ --executor-memory 512m \ --total-executor-cores 3 System.out.println("id: "+res.getInt(1)+"\tname: "+res.getString(2)+"\tage:" + res.getInt(3)
Hive 3中的事务表与非ACID表相当。Hive 3事务表中不需要桶或排序。桶化不会影响性能。这些表与原生云存储兼容。 Hive支持一个事务一个语句,该语句可以包含任意数量的行、分区或表。 如果数据可预测且易于定位,则Hive引擎和BI工具可以简化查询。Hive强制执行以下约束: 默认 确保存在一个值,该值在数据仓库卸载案例中很有用。 主键 使用唯一标识符标识表中的每一行。 Hive 3 ACID事务 Hive 3实现对事务表的原子性和隔离性操作是通过使用涉及增量文件的写入、读取、插入、创建、删除和更新操作的技术来实现,这些技术可以提供查询状态信息并帮助您解决查询问题。 读写操作 Hive 3的读写操作提高了事务表的ACID的质量和性能。事务表的性能与其他表一样。Hive支持所有TPC Benchmark DS(TPC-DS)查询。 压缩后的存储数据极少,这是Hive 3的显着优势。您不再需要担心增量文件中的插入事件会使网络饱和。
熟悉 sql server 一定不陌生,其实就是从 sql server 导了一张系统表 sys.objects 到 Hive 里面。 具体方法可以参考这里: 使用 Sqoop 将 30W+ MySQL 数据导入 Hive 这是 Hive 的第一篇公开文,讲解 group by 用法。 其余的文章存着,大家热情起来了,我再慢慢放。 扯远了,回归正题,这里是 5 道 Hive 的 group by 应用题,大家有兴趣先做着。我会在星球里公布正式答案。 已知表结构如下: ? image 3.按照 schema_id, type_desc 为分组的记录总数,以及按照 type_desc 为分组的记录总数,且两个分组的记录总数需要合并到一个结果集,如下: ? by 子选项案例。