![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hive
文章平均质量分 70
大数据开发工程师-宋权
攻城狮,嗷!!!!
展开
-
hive 业务分析
4.1 统计视频观看数 Top10 思路:使用 order by 按照 views 字段做一个全局排序即可,同时我们设置只显示前 10 条。 最终代码:4.2 统计视频类别热度 Top10 思路: (1)即统计每个类别有多少个视频,显示出包含视频最多的前 10 个类别。 (2)我们需要按照类别 group by 聚合,然后 count 组内的 videoId 个数即可。 (3)因为当前表结构为:一个视频对应一个或多个类别。所以如果要 group by .原创 2021-12-10 11:31:48 · 1650 阅读 · 0 评论 -
Hive实战
1 需求描述统计硅谷影音视频网站的常规指标,各种 TopN 指标: -- 统计视频观看数 Top10 -- 统计视频类别热度 Top10 -- 统计出视频观看数最高的 20 个视频的所属类别以及类别包含 Top20 视频的个数 -- 统计视频观看数 Top50 所关联视频的所属类别排序 -- 统计每个类别中的视频热度 Top10,以 Music 为例 -- 统计每个类别视频观看数 Top10 -- 统计上传视频最多的用户 Top10 以及他们上传的视频观看次数在前 20原创 2021-12-10 11:16:04 · 100 阅读 · 0 评论 -
hive导入txt文件
1、将txt文本文件放置hdfs目录下2、登录hive并进入到指定数据库3、创建表create external table if not exists fun_user_external ( tid INT, userid STRING, pwd STRING, create_time BIGINT, email STRING ...) ROW FORMAT DELIMITED FIELDS TERMINATED BY '`' STO原创 2021-12-07 12:02:11 · 5325 阅读 · 2 评论 -
查看hive表数据详情信息(亲测好用)
原创 2021-12-06 16:45:15 · 2153 阅读 · 0 评论 -
hive启动元数据服务
原创 2021-12-06 15:25:23 · 2222 阅读 · 0 评论 -
Hive合理设置 Map 及 Reduce 数
合理设置 Map 及 Reduce 数1)通常情况下,作业会通过 input 的目录产生一个或者多个 map 任务。 主要的决定因素有:input 的文件总个数,input 的文件大小,集群设置的文件块大小。 2)是不是 map 数越多越好? 答案是否定的。如果一个任务有很多小文件(远远小于块大小 128m),则每个小文件 也会被当做一个块,用一个 map 任务来完成,而一个 map 任务启动和初始化的时间远远大 于逻辑处理的时间,就会造成很大的资源浪费。而且,同时可执行的 map原创 2021-12-03 14:27:55 · 1340 阅读 · 0 评论 -
Hive Group By
默认情况下,Map 阶段同一 Key 数据分发给一个 reduce,当一个 key 数据过大时就倾斜 了。 并不是所有的聚合操作都需要在 Reduce 端完成,很多聚合操作都可以先在 Map 端进行 部分聚合,最后在 Reduce 端得出最终结果。 1)开启 Map 端聚合参数设置 (1)是否在 Map 端进行聚合,默认为 True set hive.map.aggr = true (2)在 Map 端进行聚合操作的条目数目 set hive.groupby.原创 2021-12-03 14:13:32 · 982 阅读 · 0 评论 -
Hive 空 key 转换
有时虽然某个 key 为空对应的数据很多,但是相应的数据不是异常数据,必须要包含在 join 的结果中,此时我们可以表 a 中 key 为空的字段赋一个随机的值,使得数据随机均匀地 分不到不同的 reducer 上。例如: 案例实操: 不随机分布空 null 值: (1)设置 5 个 reduce 个数 set mapreduce.job.reduces = 5;(2)JOIN 两张表insert overwrite table jointable select原创 2021-12-03 13:53:46 · 345 阅读 · 0 评论 -
Hive本地模式
大多数的 Hadoop Job 是需要 Hadoop 提供的完整的可扩展性来处理大数据集的。不过, 有时 Hive 的输入数据量是非常小的。在这种情况下,为查询触发执行任务消耗的时间可能 会比实际 job 的执行时间要多的多。对于大多数这种情况,Hive 可以通过本地模式在单台机 器上处理所有的任务。对于小数据集,执行时间可以明显被缩短。 用户可以通过设置 hive.exec.mode.local.auto 的值为 true,来让 Hive 在适当的时候自动 启动这个优化。原创 2021-12-03 11:53:25 · 3577 阅读 · 0 评论 -
Hive 企业级调优
1 执行计划(Explain) 1)基本语法EXPLAIN [EXTENDED | DEPENDENCY | AUTHORIZATION] query2)案例实操 (1)查看下面这条语句的执行计划 没有生成 MR 任务的有生成 MR 任务的(2)查看详细执行计划2 Fetch 抓取 Fetch 抓取是指,Hive 中对某些情况的查询可以不必使用 MapReduce 计算。例如:SELECT * FROM employees...原创 2021-12-03 11:20:56 · 649 阅读 · 0 评论 -
Hive 主流文件存储格式对比实验
从存储文件的压缩比和查询速度两个角度对比。 存储文件的压缩比测试: 2)TextFile(1)创建表,存储数据格式为 TEXTFILE(2)向表中加载数据hive (default)> load data local inpath '/opt/module/hive/datas/log.data' into table log_text ; (3)查看表中数据大小 hive (default)> dfs -du -h /user/hiv.原创 2021-12-03 10:59:33 · 469 阅读 · 0 评论 -
Hive压缩和存储
1 Hadoop 压缩配置1.1 MR 支持的压缩编码1.2 压缩参数配置要在 Hadoop 中启用压缩,可以配置如下参数(mapred-site.xml 文件中):2 开启 Map 输出阶段压缩(MR 引擎)开启 map 输出阶段压缩可以减少 job 中 map 和 Reduce task 间数据传输量。具体配置如 下:1)案例实操: (1)开启 hive 中间传输数据压缩功能 hive (default)>set hive.exec.com...原创 2021-12-03 10:46:58 · 119 阅读 · 0 评论 -
Hive自定义 UDTF 函数
0)需求 自定义一个 UDTF 实现将一个任意分割符的字符串切割成独立的单词,例如: 1)代码实现2)打成 jar 包上传到服务器/opt/module/hive/data/myudtf.jar 3)将 jar 包添加到 hive 的 classpath 下 hive (default)> add jar /opt/module/hive/data/myudtf.jar; 4)创建临时函数与开发好的 java class 关联 hive (defaul...原创 2021-12-03 10:23:58 · 859 阅读 · 0 评论 -
Hive自定义函数
自定义函数1)Hive 自带了一些函数,比如:max/min 等,但是数量有限,自己可以通过自定义 UDF 来 方便的扩展。 2)当 Hive 提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义 函数(UDF:user-defined function)。 3)根据用户自定义函数类别分为以下三种: (1)UDF(User-Defined-Function) 一进一出 (2)UDAF(User-Defined Aggregation Function)原创 2021-12-03 10:21:09 · 299 阅读 · 0 评论 -
Hive窗口函数(开窗函数)
1)相关函数说明 OVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化。 CURRENT ROW:当前行 n PRECEDING:往前 n 行数据 n FOLLOWING:往后 n 行数据 UNBOUNDED:起点, UNBOUNDED PRECEDING 表示从前面的起点, UNBOUNDED FOLLOWING 表示到后面的终点 LAG(col,n,default_val):往前第 n 行数据 LEAD(col,n, default_原创 2021-12-03 10:16:49 · 316 阅读 · 0 评论 -
Hive 函数
1 系统内置函数 1)查看系统自带的函数 hive> show functions; 2)显示自带的函数的用法 hive> desc function upper; 3)详细显示自带的函数的用法 hive> desc function extended upper;2 常用内置函数2.1 空字段赋值 1)函数说明 NVL:给值为 NULL 的数据赋值,它的格式是 NVL( value,default_value)。它的功能是如 果 v原创 2021-12-02 10:18:04 · 98 阅读 · 0 评论 -
Hive动态分区调整
关系型数据库中,对分区表 Insert 数据时候,数据库自动会根据分区字段的值,将数据 插入到相应的分区中,Hive 中也提供了类似的机制,即动态分区(Dynamic Partition),只不过, 使用 Hive 的动态分区,需要进行相应的配置1)开启动态分区参数设置 (1)开启动态分区功能(默认 true,开启)...原创 2021-12-01 13:57:45 · 5076 阅读 · 0 评论 -
Hive 分区表和分桶表
1 分区表 分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹,该文件夹下是该分区所 有的数据文件。Hive 中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据 集。在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的查询效率 会提高很多。 1.1 分区表基本操作1)引入分区表(需要根据日期对日志进行管理, 通过部门信息模拟) 2)创建分区表语法 注意:分区字段不能是表中已经存在的数据,可以将分区字...原创 2021-12-01 11:37:16 · 315 阅读 · 0 评论 -
Hive笛卡尔积
1)笛卡尔集会在下面条件下产生 (1)省略连接条件 (2)连接条件无效 (3)所有表中的所有行互相连接 2)案例实操hive (default)> select empno, dname from emp, dept;4 排序4.1 全局排序(Order By) Order By:全局排序,只有一个 Reducer1)使用 ORDER BY 子句排序 ASC(ascend): 升序(默认) DESC(descend): 降序原创 2021-12-01 11:23:31 · 2150 阅读 · 0 评论 -
Hive 分组
2.1 Group By 语句 GROUP BY 语句通常会和聚合函数一起使用,按照一个或者多个列队结果进行分组,然 后对每个组执行聚合操作。 1)案例实操: (1)计算 emp 表每个部门的平均工资 hive (default)> select t.deptno, avg(t.sal) avg_sal from emp t group by t.deptno; (2)计算 emp 每个部门中每个岗位的最高薪水 hive (default)> select原创 2021-12-01 11:10:15 · 1970 阅读 · 0 评论 -
Hive 查询
1 基本查询(Select…From)1.1 全表和特定列查询 0)数据准备 (0)原始数据 dept:原创 2021-12-01 10:54:58 · 527 阅读 · 0 评论 -
Hive DML 数据操作
1 数据导入1.1 向表中装载数据(Load) 1)语法 (1)load data:表示加载数据 (2)local:表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表 (3)inpath:表示加载数据的路径 (4)overwrite:表示覆盖表中已有数据,否则表示追加 (5)into table:表示加载到哪张表 (6)student:表示具体的表(7)partition:表示上传到指定分区 2)实操案例 (0)创建原创 2021-11-30 11:45:32 · 105 阅读 · 0 评论 -
Hive修改表
6.1 重命名表1)语法 ALTER TABLE table_name RENAME TO new_table_name 2)实操案例 hive (default)> alter table dept_partition2 rename to dept_partition3; 6.3 增加/修改/替换列信息1)语法 (1)更新列(2)增加和替换列注:ADD 是代表新增一字段,字段位置在所有列后面(partition 列前), R原创 2021-11-30 11:22:14 · 780 阅读 · 0 评论 -
hive外部表
1)理论 因为表是外部表,所以 Hive 并非认为其完全拥有这份数据。删除该表并不会删除掉这 份数据,不过描述表的元数据信息会被删除掉。 2)管理表和外部表的使用场景 每天将收集到的网站日志定期流入 HDFS 文本文件。在外部表(原始日志表)的基础上 做大量的统计分析,用到的中间表、结果表使用内部表存储,数据通过 SELECT+INSERT 进入内部表。 3)案例实操 分别创建部门和员工外部表,并向表中导入数据。 (0)原始数据dept: em.原创 2021-11-30 11:14:16 · 2155 阅读 · 0 评论 -
DDL 数据定义
1 创建数据库 1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db。 hive (default)> create database db_hive; 2)避免要创建的数据库已经存在错误,增加 if not exists 判断。(标准写法) 3)创建一个数据库,指定数据库在 HDFS 上存放的位置hive (default)> create database db_hive2 location '..原创 2021-11-30 10:51:15 · 71 阅读 · 0 评论 -
Hive数据类型
1 基本数据类型对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不 过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。2 集合数据类型 Hive 有三种复杂数据类型 ARRAY、MAP 和 STRUCT。ARRAY 和 MAP 与 Java 中的 Array 和 Map 类似,而 STRUCT 与 C 语言中的 Struct 类似,它封装了一个命名字段集合,复杂数据 类型允许任意层..原创 2021-11-30 10:12:20 · 142 阅读 · 0 评论 -
Hive 常用交互命令
1.1)“-e”不进入 hive 的交互窗口执行 sql 语句[atguigu@hadoop102 hive]$ bin/hive -e "select id from student;" 2)“-f”执行脚本中 sql 语句(1)在/opt/module/hive/下创建 datas 目录并在 datas 目录下创建 hivef.sql 文件 [atguigu@hadoop102 datas]$ touch hivef.sql (2)文件中写入正确的 s.原创 2021-11-23 16:39:17 · 1018 阅读 · 0 评论 -
使用 JDBC 方式访问 Hive
1)在 hive-site.xml 文件中添加如下配置信息 2)启动 hiveserver2[atguigu@hadoop102 hive]$ bin/hive --service hiveserver23)启动 beeline 客户端(需要多等待一会) [atguigu@hadoop102 hive]$ bin/beeline -u jdbc:hive2://hadoop102:10000 -n atguigu4)看到如下界面 Connecti.原创 2021-11-23 16:33:35 · 1674 阅读 · 0 评论 -
Hive 安装
1 Hive 安装地址 1)Hive 官网地址 http://hive.apache.org/ 2)文档查看地址 https://cwiki.apache.org/confluence/display/Hive/GettingStarted 3)下载地址 http://archive.apache.org/dist/hive/ 4)github 地址 https://github.com/apache/hive 2Hive 安装部署2.1 安装 Hiv原创 2021-11-23 16:29:33 · 1632 阅读 · 0 评论 -
Hive 和数据库比较
由于 Hive 采用了类似 SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。 本文将从多个方面来阐述 Hive 和数据库的差异。数据库可以用在 Online 的应用中,但是 Hive 是为数据仓库而设计的,清楚这一点,有助于从应用角度理解 Hive 的特性。 4.1 查询语言 由于 SQL 被广泛的应用在数据仓库中,因此,专门针对 Hive 的原创 2021-11-22 15:55:34 · 771 阅读 · 0 评论 -
Hive 基本概念
1.1 什么是 Hive 1) hive 简介 Hive:由 Facebook 开源用于解决海量结构化日志的数据统计工具。 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并 提供类 SQL 查询功能。 2) Hive 本质:将 HQL 转化成 MapReduce 程序(1)Hive 处理的数据存储在 HDFS (2)Hive 分析数据底层的实现是 MapReduce (3)执行程序运行在 Yarn 上 2Hive 的优缺.原创 2021-11-22 15:51:21 · 101 阅读 · 0 评论