Hive中的基本数据类型和表的类型

news2024/11/30 5:58:25

Hive支持关系数据库中大多数据基本数据类型,同时还支持三种复杂类型。
在这里插入图片描述在这里插入图片描述
示例:

Hive表
创建表

– 直接建表法
create table t_page_view (
page_id bigint comment ‘页面ID’,
page_name string comment ‘页面名称’,
page_url string comment ‘页面URL’
)
comment ‘页面视图’
partitioned by (ds string comment ‘当前时间,用于分区字段’)
stored as parquet
location ‘/user/hive/warehouse/t_page_view’;

– 查询建表法
create table t_page_view2 as select * from t_page_view;

– like建表法(克隆表)
create table t_page_view3 like t_page_view;

Hive表类型
内部表

Hive中默认创建的是内部表,内部表的数据由Hive来管理。在 drop表的时候,表的数据和元数据都会被删除。

CREATE TABLE pokes (
foo INT,
bar STRING
);

外部表

外部表的数据不由Hive管理。Hive可以创建外部表和 HDFS、HBase 和 Elasticsearch 等进行整合。drop外部表时,只会删除元数据,不会删除真实数据。外部表关键字EXTERNAL。

CREATE EXTERNAL TABLE IF NOT EXISTS tb_station (
station string,
lon string,
lat string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’
LOCATION ‘/user/test/coordinate/’;

内部表与外部表转换

– 内部表转外部表
alter table tableA set TBLPROPERTIES(‘EXTERNAL’=‘true’);
– 外部表转内部表
alter table tableA set TBLPROPERTIES(‘EXTERNAL’=‘false’);

分区表

Hive表的数据是存储在HFDS中对应的目录中,普通表的数据直接存储在这个目录下,而分区表存储时,会再划分子目录来存储,一个分区对应一个子目录。主要作用是来优化查询性能。在Hive表查询的时候,如果指定了分区字段作为筛选条件,那么只需要到对应的分区目录下去检索数据即可,减少了处理的数据量,从而有效的提高了效率。在对分区表进行查询时,尽量使用分区字段作为筛选条件。

CREATE TABLE invites (
foo INT,
bar STRING
)
PARTITIONED BY (ds STRING);

桶表

分桶是将数据分解成更容易管理的若干部分的技术,桶表示对数据源数据文件本身来拆分数据。桶是更为细粒度的数据范围划分。Hive采用对列进行哈希,然后对桶的个数取模的方式决定该条记录存放在哪个桶当中。

创建桶表时,需要指定桶的个数,分桶的依据字段,Hive就可以自动将数据分桶存储。

查询时,只需要遍历一个桶里的数据,或者遍历部分桶,这样就提高了查询效率。

示例:

CREATE TABLE ods.tb_ad_action_d (
op_time STRING,
user_id STRING,
task_id STRING,
event_name STRING
)
CLUSTERED BY (user_id)
SORTED BY(task_id)
INTO 10 BUCKETS
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’
STORED AS TEXTFILE;

CLUSTERED BY:是指根据user_id的值进行哈希后模除分桶个数,根据得到的结果,确定这行数据分入哪个桶中。
SORTED BY:指定桶中的数据以哪个字段进行排序,排序的好处是,在 join 操作时能够获得很高的效率。
INTO 10 BUCKETS:指定一共分多少个桶。

常用HiveQL整理

Database

– 创建database
create database IF NOT EXISTS ods;

USE database_name;

USE DEFAULT;

– 删除database
drop database if exists ods;

Table

– 创建内部表(默认)
create table trade_detail(
id bigint,
account string,
income double,
expenses double,
time string)
row format delimited
fields terminated by ‘\t’;

– 创建分区表
create table td_part(
id bigint,
account string,
income double,
expenses double,
time string)
partitioned by (logdate string)
row format delimited
fields terminated by ‘\t’;

– 创建外部表
create external table td_ext(
id bigint,
account string,
income double,
expenses double,
time string)
row format delimited
fields terminated by ‘\t’
location ‘/data/td_ext’;

– 创建外部分区表
create external table td_part_ext(
id bigint,
account string,
income double,
expenses double,
time string)
partitioned by (logdate string)
stored as parquet tblproperties(“parquet.compress”=“SNAPPY”)
location ‘/data/td_part_ext’;

drop table if exists td_part_ext;

Alter

– 修改表明
ALTER TABLE page_view RENAME to page_view_new;

– 修改字段
ALTER TABLE page_view CHANGE ip ip_address string AFTER refererurl;

– 添加字段
ALTER TABLE page_view ADD COLUMNS (name string comment ‘view name’);

– 添加分区
ALTER TABLE page_view ADD IF NOT EXISTS PARTITION (dt=‘20190705’) LOCATION=‘/data/page_view/dt=20190705’;

– 修改location
ALTER TABLE page_view PARTITION(dt=‘20190706’) SET LOCATION “/data/page_view/dt=20190706”;

– 修改分隔符
ALTER TABLE page_view SET SERDEPROPERTIES (‘field.delim’ = ‘,’);

– 删除分区
ALTER TABLE page_view DROP PARTITION (dt=‘2008-08-08’, country=‘us’);

Show

– 查看创建表语句
show create table td_part;

– 查看表分区
show partitions td_part;

修复分区

– 修复分区
msck repair table page_view;

数据导入

– 将本地文件导入到hive
load data local inpath ‘/home/hadoop/student’ overwrite into table student partition(state=‘Sichuan’, city=‘Chengdu’);

– 将hdfs上文件导入到hive
load data inpath ‘/user/hadoop/add.txt’ into table student partition(state=‘Sichuan’, city=‘Chengdu’);

– 从别的表中查询出相应的数据并导入到hive表中
insert into table test partition(age=‘25’) select id ,name from wyp where age=‘25’;

– 在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中
create table tmp as select * from student where age>‘18’;

数据导出

– 导出到本地文件系统
insert overwrite local directory ‘/home/hadoop/student’ select * from student;

– 导出到hdfs
insert overwrite directory ‘/user/hadoop/student’ select * from student;

– 将查询结果插入到表中(追加)
insert into table student_new select id,name from student where age=‘25’;

– 将查询结果插入到表中(覆盖)
insert into table student_new select id,name from student where age=‘25’;

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

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

相关文章

Python PDF转JPG图片小工具

Python PDF转JPG图片小工具 1.简介 将单个pdf装换成jpg格式图片 Tip: 1、软件窗口默认最前端,不支持调整窗口大小; 2、可通过按钮选择PDF文件,也可以直接拖拽文件到窗口; 3、转换质量有5个档位,(0.25&a…

剖析 SpringBoot 于夕阳红公寓管理系统架构搭建的核心作用

3 系统分析 本文作者在确定了研究的课题之后,从各大数字图书馆下载文献来阅读,并了解同类型的网站具备的大致功能,然后与本系统用户的实际需求结合进行分析,得出本系统要研究的具体功能与性能。虽然分析系统这一阶段性工作主要是确…

springboot336社区物资交易互助平台pf(论文+源码)_kaic

毕 业 设 计(论 文) 社区物资交易互助平台设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此&#xff…

嵌入式linux系统中网络编程的具体实现

1.网络编程简介 要编写通过计算机网络通信的程序,首先要确定这些程序同通信的协议(protocol),在设计一个协议的细节之前,首先要分清程序是由哪个程序发起以及响应何时产生。 举例来说,一般认为WEB服务器程序是一个长时间运行的程序(守护进程deamon),它只在响应来自网…

vue3.0 根据富文本html页面生成压缩包(含视频在线地址、图片在线地址、前端截图、前端文档)

vue3.0生成压缩包(含在线地址、前端截图、前端文档) 需求描述效果开始下载插件包基本代码构造 点击下载按钮1.截图content元素,并转化为pdfcanvas putImageData、getImageDatagetImageData 获取指定矩形区域的像素信息putImageData 将这些数据…

由于导包而引发的错误

今天在调试时发现删除功能无论如何都无法实现,于是调试找到了mapper层的错误但不知道为什么报错。以下是报错信息。 Caused by: org.apache.ibatis.binding.BindingException: Parameter userIds not found. Available parameters are [arg0, collection, list]at o…

黑马2024AI+JavaWeb开发入门Day04-SpringBootWeb入门-HTTP协议-分层解耦-IOCDI飞书作业

视频地址:哔哩哔哩 讲义作业飞书地址:day04作业(IOC&DI) 作业很简单,主要是练习拆分为三层架构controller、service、dao,并基于IOC & DI进行解耦。 1、结构: 2、代码 网盘链接&…

【LeetCode: 145. 二叉树的后序遍历 + 栈】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

哈希表算法题

目录 题目一——1. 两数之和 - 力扣(LeetCode) 1.1.暴力解法1 1.2.暴力解法2 1.2.哈希表解法 题目二——面试题 01.02. 判定是否互为字符重排 - 力扣(LeetCode) 题目三——217. 存在重复元素 - 力扣(LeetCode&…

Galaxy预测比特币期权活跃交易将持续至2027年,特朗普执政中期

随着比特币及其相关产品的交易量不断增加,加密货币市场的期权交易也迎来了前所未有的活跃。Galaxy Digital的交易团队指出,贝莱德IBIT ETF期权在美国股市的交易量已经创下了新纪录。首日交易量高达353,716份合约,几乎与2012年Facebook期权上线…

Java-GUI(登录界面示例)

简述: 步骤: (1)构造界面(将组件对象加入容器对象,注意:应设定对容器对象的布局策略) (2)为界面加入事件响应处理(如单击按钮) 实现: 两种方式实现,只有用户名为"admin"且密码为…

屏幕分辨率|尺寸|颜色深度指纹

一、前端通过window.screen接口获取屏幕分辨率 尺寸 颜色深度,横屏竖屏信息。 二、window.screen c接口实现: 1、third_party\blink\renderer\core\frame\screen.idl // https://drafts.csswg.org/cssom-view/#the-screen-interface[ExposedWindow ] …

【论文阅读】三平面相关与变体

文章目录 1. 【CVPR2023】Tri-Perspective View for Vision-Based 3D Semantic Occupancy Prediction动机可视化方法Pipeline 2. 【2023/08/31】PointOcc: Cylindrical Tri-Perspective View for Point-based 3D Semantic Occupancy Prediction动机(针对雷达点云、与…

Java - JSR223规范解读_在JVM上实现多语言支持

文章目录 1. 概述2. 核心目标3. 支持的脚本语言4. 主要接口5. 脚本引擎的使用执行JavaScript脚本执行groovy脚本1. Groovy简介2. Groovy脚本示例3. 如何在Java中集成 Groovy4. 集成注意事项 6. 与Java集成7. 常见应用场景8. 优缺点9. 总结 1. 概述 JSR223(Java Spe…

定时/延时任务-ScheduledThreadPoolExecutor的使用

文章目录 1. 概要2. 固定速率和固定延时2.1 固定速率2.2 固定延时 3. API 解释3.1 schedule3.2 固定延时 - scheduleWithFixedDelay3.2 固定速率 - scheduleWithFixedDelay 4. 小结 1. 概要 前三篇文章的地址: 定时/延时任务-自己实现一个简单的定时器定时/延时任…

什么是sfp,onu,​为什么PON(​俗称“光猫”​)模块使用SC光纤接口

在现代网络设备中,我们经常会看到SFP或SFP接口的身影,这些接口有时被简称为光口,但这个称呼并不严谨。有些厂商则称之为多功能口或多用途口,然而这对于不了解的人来说可能还是一头雾水。SFP,即Small Form-Factor Plugg…

005 MATLAB符号微积分

前言: 在MATLAB中,数值与符号的主要区别在于它们的处理方式和应用场景 数值计算适用于实际的数值计算问题,如矩阵运算、数据分析等。符号计算适用于符号推导、公式化简和符号解析,如理论物理和工程计算。 01 符号对象 1.基本符…

深入实践:从零开始掌握GPT的应用开发

1. 为什么选择GPT? GPT(Generative Pre-trained Transformer)是当下最具影响力的语言生成模型之一,适用于生成文本、分析语言情感、翻译、多任务对话等多种场景。相比传统算法和模型,GPT有以下显著优势: …

WRF-Chem模式安装、环境配置、原理、调试、运行方法;数据准备及相关参数设置方法

大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因素是控制大气污染的关键自然因素。大气污染问题既是局部、当地的,也是区域的,甚至是全球的。本地的污染物排放除了对当地造成严重影响外,同时还会在…

开源项目:纯Python构建的中后台管理系统

来源:Python大数据分析 费弗里 大家好我是费老师,目前市面上有很多开源的「中后台管理系统」解决方案,复杂如「若依」那种前端基于Vue,后端基于Java的框架,虽然其提供了较为完善的一整套前后端分离权限管理系统解决方…