【Hive入门】

之前实习写的笔记,上传留个备份。

1. 使用docker-compose快速搭建Hive集群

使用docker快速配置Hive环境

  • 拉取镜像

2. Hive数据类型

  • 隐式转换:窄的可以向宽的转换
  • 显式转换:cast

3. Hive读写文件

  • SerDe:序列化(对象转为字节码)、反序列化
3.1 hive读写文件流程
  • 反序列化(将文件映射为表)

    调用inputFormat,转为<key,value>类型,然后进行反序列化。

3.2 SerDe语法
  1. row format 指定序列化方式和分割符

    • Delimited:默认序列化方式
    • Json:改变序列化方式
  2. hive 默认分割符"\001"

4. 存储路径

  • 默认存储:/usr/hive/warehouse
  • 指定存储路径:location hdfs_path

5. 练习

创建表并加载数据。

use ods;
create external table hero_info_1(id bigint comment "ID",name string comment "英雄名称",hp_max bigint comment "最大生命"
) comment "王者荣耀信息"
row format delimited
fields terminated by "\t";

将文件上传到相应路径,只要指定好分割符就可以。

hadoop fs -put test1.txt /usr/hive/warehouse/test.db/hero_info_1
  • map类型
create table hero_info_2(id int comment "ID",name string comment "英雄名字",win_rate int comment "胜率",skin map<string, int> comment "皮肤:价格" -- 注意map分割类型
) comment "英雄皮肤表"
row format delimited
fields terminated by "," -- 指定字段分割符
collection items terminated by '-' -- 指定集合元素之间分割符
map keys terminated by ':'; -- 指定map元素kv之间的分割符
hadoop fs -put test2.txt /usr/hive/warehouse/test.db/hero_info_2

6. 指定路径使用

create table t_hero_info_3(id int comment "ID",name string comment "英雄名字",win_rate int comment "胜率",skin map<string, int> comment "皮肤:价格" -- 注意map分割类型
) comment "英雄皮肤表"
location "/tmp";select * from t_hero_info_3; 

7. 内部表和外部表

  • 外部表,删除不会删除hdfs文件

  • 一般都用外部表

drop table t_hero_info_3; -- 文件也被删除

9. 分区表

  • 上传多个文件

  • 发现sql执行很慢,因为where需要进行全表扫描,所以效率慢

  • 但是我们是根据射手类型来进行分类的,因此可以只扫描这一个分区的数据

  • 分区字段不能是表中已经存在的字段

create external table t_hero_info_1(id int comment "ID",name string comment "名字"
) comment "英雄信息"
partitioned by (role string)
row format delimited
fields terminated by "\t";
  • 静态分区
load data local inpath '/root/a.txt' into table t_hero_info_1 partition(role='sheshou');
​
​
-- 分区扫描 role是分区字段,不用全表扫描
select count(*) from t_hero_info_1 where role = "sheshou" and hp_max > 6000;

10. 多重分区表

  • 一般为双重分区表
create external table t_hero_info_1(id int comment "ID",name string comment "名字"
) comment "英雄信息"
partitioned by (province string, city string); -- 分区字段存在顺序-- 分区1
load data local inpath '/root/a.txt' into table t_hero_info_1 partition(province='beijing',city='chaoyang');
-- 分区2
load data local inpath '/root/b.txt' into table t_hero_info_1 partition(province='beijing',city='haidian');
-- 多重分区
load data local inpath '/root/b.txt' into table t_hero_info_1 partition(province='shanghai',city='pudong');

11. 动态分区

  • 根据字段值来进行动态分区,使用insert+select
  • 步骤:创建完分区表后,存在一个分区字段role,这时我们使用insert+select方法将原先表的数据插入到分区表中。
-- 原始数据表 t_all_hero
-- 分区表 t_all_hero_part-- role这里是分区字段,role_main是我们给指定的分区类型
insert into table t_all_hero_part partition(role) select tmp.*, tmp.role_main from t_all_hero tmp;
  • 在企业中,一般根据日期来进行分区表。
  • 注意:分区的字段不能是已有的字段,即字段名字不能重复
  • 分区的字段是个虚拟的字段,并不存在于底层当中

12. 分桶表

  • 来进行优化查询

  • 分桶是将一个文件分为若干个文件

规则
  • 将文件中数据哈希,从而分到不同桶中。

  • 一般是根据主键来进行分桶

  • 创建一个普通的表,然后上传数据;通过inset+select来加载分桶

-- 创建分桶表
create table test.t_state_info()
clustered by(state) into 5 buckets; -- state一定是表中已有的字段-- 插入数据
insert into t_state_info_bucket select * from t_state_info;
好处
  1. 可以基于分桶字段来查找,不需要进行全表过滤

  2. join时减少笛卡尔积数量

    窗口函数

    • over后返回的表行数不变

解析json

get_json_object:一次只能解析一个字段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/908184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式——简单工厂模式(创建型)

摘要 本文主要介绍了简单工厂模式&#xff0c;包括其定义、结构、实现方式、适用场景、实战示例以及思考。简单工厂模式是一种创建型设计模式&#xff0c;通过工厂类根据参数决定创建哪一种产品类的实例&#xff0c;封装了对象创建的细节&#xff0c;使客户端无需关心具体类的…

抽象工厂模式与策略模式结合使用小案例

目录 1.前言1.示例说明1.1定义通用接口1.2 定义抽象工厂1.3 支付宝实现1.4 微信实现1.5 客户端使用代码&#xff08;组合使用&#xff09;1.6 示例结果输出1.7 总结 1.前言 上一篇章就通过简单的案例来了解抽象工厂模式和策略模式的使用&#xff0c;现在就用个支付场景的小案例…

通过WiFi无线连接小米手机摄像头到电脑的方法

通过WiFi无线连接小米手机摄像头到电脑的方法 以下是基于Scrcpy和DroidCam两种工具的无线连接方案&#xff0c;需提前完成开发者模式与USB调试的开启&#xff08;参考原教程步骤&#xff09;&#xff1a; 方法一&#xff1a;Scrcpy无线投屏&#xff08;无需手机端安装&#xf…

2025软件供应链安全最佳实践︱证券DevSecOps下供应链与开源治理实践

项目背景&#xff1a;近年来&#xff0c;云计算、AI人工智能、大数据等信息技术的不断发展、各行各业的信息电子化的步伐不断加快、信息化的水平不断提高&#xff0c;网络安全的风险不断累积&#xff0c;金融证券行业面临着越来越多的威胁挑战。特别是近年以来&#xff0c;开源…

Java高级 | 【实验二】Springboot 控制器类+相关注解知识

隶属文章&#xff1a; Java高级 | &#xff08;二十二&#xff09;Java常用类库-CSDN博客 系列文章&#xff1a; Java高级 | 【实验一】Spring Boot安装及测试 最新-CSDN博客 目录 一、MVC模式 二、SpringBoot基础——控制层Controller详解 &#xff08;一&#xff09;主要工…

MySQL 事务深度解析:面试核心知识点与实战

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Java 中 MySQL 事务深度解析&#xff1a;面试…

【趣味Html】第11课:动态闪烁发光粒子五角星

打造炫酷的动态闪烁发光粒子五角星效果 前言 在现代Web开发中&#xff0c;视觉效果的重要性不言而喻。今天我们将深入探讨如何使用HTML5 Canvas和JavaScript创建一个令人惊艳的动态闪烁发光粒子五角星效果。这个项目不仅展示了Canvas的强大功能&#xff0c;还涉及了粒子系统、…

6.RV1126-OPENCV 形态学基础膨胀及腐蚀

一.膨胀 1.膨胀原理 膨胀的本质就是通过微积分的转换&#xff0c;将图像A和图形B进行卷积操作合并成一个AB图像。核就是指任意的形状或者大小的图形B。例如下图&#xff0c;将核(也就是图形B)通过微积分卷积&#xff0c;和图像A合并成一个图像AB。 2.特点 图像就会更加明亮 …

机器学习实战37-基于情感字典和机器学习的股市舆情分析可视化系统

文章目录 一、项目背景数字时代情感分析情况二、项目流程1.数据采集与预处理2.复合情感分析模型构建3.舆情分析可视化:三、机器学习算法原理1.支持向量机基础2.核函数与高维映射3.情感分类特征融合4.模型训练与优化四、实现代码五、系统特点与优势1.复合情感分析模型2.多维度可…

STM32F407VET6学习笔记9:编译输出固定大小.bin文件

今日学习如何输出固定大小的.bin编译文件 目录 Keil_V5 fromelf.exe 软件目录&#xff1a; 魔棒添加命令输出bin文件&#xff1a; 输出固定大小的bin文件&#xff1a; 计算bin文件大小&#xff1a; 安装 SRecord 工具集&#xff1a; 使用SRecord&#xff1a; 参考文章&#…

【Web应用】若依框架:基础篇14 源码阅读-后端代码分析

文章目录 ⭐前言⭐一、课程讲解⭐总结 标题详情作者JosieBook头衔CSDN博客专家资格、阿里云社区专家博主、软件设计工程师博客内容开源、框架、软件工程、全栈&#xff08;,NET/Java/Python/C&#xff09;、数据库、操作系统、大数据、人工智能、工控、网络、程序人生口号成为你…

Java 单例模式详解

目录 1. 饿汉式&#xff08;Eager Initialization&#xff09; 2. 懒汉式&#xff08;Lazy Initialization&#xff09; 3. 懒汉式 同步锁&#xff08;线程安全&#xff09; 4. 双重检查锁&#xff08;Double-Checked Locking&#xff09; 5. 静态内部类&#xff08;推荐…

从 AMQP 到 RabbitMQ:核心组件设计与工作原理(一)

一、引言 ** 在当今分布式系统盛行的时代&#xff0c;消息队列作为一种关键的中间件技术&#xff0c;承担着系统间异步通信、解耦和削峰填谷的重要职责。AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;作为一种高级消息队列协议&#xff0c;为消息队列的实现…

概率单纯形(Probability Simplex)

目录 定义性质在统计学中的应用在机器学习中的应用在信息论中的应用在优化问题中的应用在其他领域的应用 定义 定义&#xff1a;在数学中&#xff0c;概率单纯形&#xff08;Probability Simplex&#xff09;是指在 n n n维空间中&#xff0c;所有分量非负且分量之和为1的向量…

项目练习:Vue2中el-button上的@click事件失效

文章目录 一、问题描述二、解决 一、问题描述 button按钮上绑定了一个click事件 对应的方法写在methods中 但是&#xff0c;测试点击时&#xff0c;无法触发函数 二、解决 1、问题代码 <el-buttonclick"changeConfirm(Y)"type"success"plainicon&qu…

十六、【前端强化篇】完善 TestCase 编辑器:支持 API 结构化定义与断言配置

【前端强化篇】完善 TestCase 编辑器:支持 API 结构化定义与断言配置 前言准备工作第一步:更新前端 `TestCase` 类型定义第二步:改造 `TestCaseEditView.vue` 表单第三步:修改后端代码中的TestCase模型和序列化器第四步:测试强化后的用例编辑器总结前言 在之前的后端文章…

HTTP连接管理——短连接,长连接,HTTP 流水线

连接管理是一个 HTTP 的关键话题&#xff1a;打开和保持连接在很大程度上影响着网站和 Web 应用程序的性能。在 HTTP/1.x 里有多种模型&#xff1a;短连接、_长连接_和 HTTP 流水线。 下面分别来详细解释 短连接 HTTP 协议最初&#xff08;0.9/1.0&#xff09;是个非常简单的…

MySQL范式和反范式

范式 是用一组规则定义的数据库设计标准&#xff0c;旨在确保数据库结构合理&#xff0c;避免数据冗余和异常。 目的 消除数据的重复&#xff0c;提高存储效率防止数据异常&#xff08;插入、删除、更新异常&#xff09;提高数据的完整性和一致性 第一范式 定义 所有列&am…

编程技能:格式化打印04,sprintf

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;格式化打印03&#xff0c;printf 回到目录…

JavaScript性能优化实战:深入探讨JavaScript性能瓶颈与优化技巧

引言:为什么JavaScript性能至关重要 在现代Web开发中,JavaScript已成为构建交互式应用程序的核心技术。随着单页应用(SPA)和复杂前端架构的普及,JavaScript代码的性能直接影响用户体验、转化率甚至搜索引擎排名。研究表明,页面加载时间每增加1秒,转化率可能下降7%,而性能…