Hive笔记-2

第 3 章 DDL (Data Definition Language) 数据定义

  • DDL数据定义语言

  • DML数据操作语言

3.1 数据库 (database)

3.1.1 创建数据库

1) 语法
CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];

2) 案例
  1. 默认路径

  1. 创建数据库指定路径

3.创建数据库,带有dbproperties

测试dbproperties

创建dbproperties

3.1.2 查询数据库

1) 展示所有数据库
(1) 语法

查看数据库:

Show Databases;

Like 就是模糊匹配的作用

Like后面可以写一个通配的表达式

查看数据库信息:

案例:

3.1.3 修改数据库

1) 语法
--修改dbproperties
ALTER DATABASE database_name SET DBPROPERTIES (property_name=property_value, ...);
​
--修改location
ALTER DATABASE database_name SET LOCATION hdfs_path;
​
--修改owner user
ALTER DATABASE database_name SET OWNER USER user_name;
2) 案例
(1) 修改 dbproperties (!!!------重要------!!!)

查看修改的信息有没有生效:

3.1.4 删除数据库

1) 语法

3.1.5 切换当前数据库

1) 语法

3.2 表(table)

3.2.1 创建表

3.2.1.1 语法
1) 普通建表
(1) 完整语法
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name   
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
---[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
---[CLUSTERED BY (col_name, col_name, ...) 
---[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format] 
[STORED AS file_format]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]

经典咏柳传 建表

TEMPORARY 临时表

EXTERNAL 内部表

data_type 数据类型

Hive读写文件的操作流程:

Deserializer 反序列化集合

Serializer 序列化集合

(2) 关键字说明:
  • 1.TEMPORARY(临时表)

临时表,该表只在当前会话可见,会话结束,表会被删除。

  • 2.EXTERNAL (重点)

外部表,与之相对应的是内部表(管理表)。管理表意味着Hive会完全接管该表,包括元数据和HDFS中的数据。而外部表则意味着Hive只接管元数据,而不完全接管HDFS中的数据。

  • 3.data_type (重点)

Hive 中的字段类型可分为基本数据类型和复杂数据类型。

基本数据类型如下:

其中decimal为十进制精准数字类型

decimal接收两个参数decimal(16,2)

第1个参数是 十进制数,

第2个参数是 小数点的位数

使用string类型无需指定长度

复杂数据类型如下:

注: 类型转换

Hive 的基本数据类型可以做类型转换,转换的方式包括隐式转换以及显示转换。

方式一: 隐式转换(自动转换)

具体规则如下:

a.任何整数类型都可以隐式地转换为一个范围更广的类型,如tinyint可以转换为int,int可以转换为bigint。

b.所有整数类型、float和string类型都可以隐式地转换成double。

c.tinyint、smallint、int都可以转换为float。

d.boolean类型不可以转换为任何其他的类型。

详情可参考Hive官方说明:Allowed Implicit Conversions

为什么string类型加int类型会变成double类型

因为根据官方表,两个类型都能转的类型是double类型,所以是double类型

方式二: 显示转换(强制转换)

可以借助cast函数完成显示的类型转换

a.语法

cast (expr as <type>)

expr是要转的数据, <type>是要转的类型

b.案例

hive (default)> select '1' + 2, cast('1' as int) + 2;
​
_c0    _c1
3.0     3
  • 4.PARTITIONED BY (重点)

创建分区表

  • 5.CLUSTERED BY ...SORTED BY...INTO...BUCKETS (重点)

创建分桶表

  • 6.ROW FORMAT (重点)

指定SERDE,SERDE是Serializer and Deserializer的简写。Hive使用SERDE序列化和反序列化每行数据。详情可参考 Hive-Serde。语法说明如下:

语法一:DELIMITED关键字表示对文件中的每个字段按照特定分割符进行分割,其会使用默认的SERDE对每行数据进行序列化和反序列化。

ROW FORAMT DELIMITED 
[FIELDS TERMINATED BY char] 
[COLLECTION ITEMS TERMINATED BY char] 
[MAP KEYS TERMINATED BY char] 
[LINES TERMINATED BY char] 
[NULL DEFINED AS char]

注:

Ø *fields terminated by* :列分隔符

Ø *collection items terminated by* : map、struct和array中每个元素之间的分隔符

Ø *map keys terminated by* :map中的key与value的分隔符

Ø *lines terminated by* :行分隔符

语法二:SERDE关键字可用于指定其他内置的SERDE或者用户自定义的SERDE。例如JSON SERDE,可用于处理JSON字符串。

ROW FORMAT SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value,property_name=property_value, ...)] 
  • 7. STORED AS (重点)

指定文件格式,常用的文件格式有,textfile(默认值),sequence file,orc file、parquet file等等。

  • 8. LOCATION

指定表所对应的HDFS路径,若不指定路径,其默认值为

${hive.metastore.warehouse.dir}/db_name.db/table_name

  • 9. TBLPROPERTILES

用于配置表的一些KV键值对参数

2) Create Table As Select (CTAS) 建表

该语法允许用户利用select查询语句返回的结果,直接建表,表的结构和查询语句的结构保持一致,且保证包含select查询语句放回的内容。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name 
[COMMENT table_comment] 
[ROW FORMAT row_format] 
[STORED AS file_format] 
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]
[AS select_statement]

相当于复制表结构和表数据

3) Create Table Like 语法

该语法允许用户复刻一张已经存在的表结构,与上述的CTAS语法不同,该语法创建出来的表中不包含数据。

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
[LIKE exist_table_name]
[ROW FORMAT row_format] 
[STORED AS file_format] 
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]

只复制了表结构,没有表数据,打开这张表是个空表

三种建表方式 :

普通建表(insert) Create Table As Select(CTAS)(复制数据) Create Table Like(不复制数据)

案例1(创建内外部表):

comment 注释(注解).

  • if not exists student 是一个条件字句,表示如果student表不存在就创建student表。若存在则不创建。

  • row format delimited fields terminated by '\t':这个子句指定了表的数据存储格式。在这种情况下,它告诉Hive表的字段是由制表符(\t)分隔的。

  • location '/user/hive/warehouse/student':这个子句指定了Hive在HDFS上存储表数据的位置。在这个例子中,数据将被存储在HDFS的/user/hive/warehouse/student目录下。

自己在Datagrip运行:

Linux上student文件里的数据:

运行结果:

外部表通常可用于处理其他工具上传的数据文件,对于外部表,Hive只负责管理元数据,不负责管理HDFS中的数据文件。

案例2(SERDE和复杂数据类型):

三大复杂数据类型: array map struct

运行结果:

实操演示:

给他挂到HDFS上:

在Datagrip上运行:

创建成功:

可以select拿到自己想要拿到的数据:

案例3(create table as select 和 create table like):

create table as select

案例实操:

create table like

案例实操:

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

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

相关文章

Git 代码管理规范 !

分支命名 master 分支 master 为主分支&#xff0c;也是用于部署生产环境的分支&#xff0c;需要确保master分支稳定性。master 分支一般由 release 以及 hotfix 分支合并&#xff0c;任何时间都不能直接修改代码。 develop 分支 develop 为开发环境分支&#xff0c;始终保持最…

在微信公众号上怎么添加预定房间功能

在这个快节奏的现代社会&#xff0c;人们对于便捷与高效的需求日益增加。特别是在旅行或出差时&#xff0c;能够快速、方便地预订一间舒适的房间&#xff0c;无疑是每个人心中的小确幸。今天&#xff0c;我们为您带来了一项革命性的服务——微信公众号上的房间预定功能&#xf…

Serverless如何赋能餐饮行业数字化?乐凯撒思变之道

导语 | 在数字化浪潮席卷全球的今天&#xff0c;每一个行业都在经历着前所未有的变革。餐饮行业作为人们日常生活中不可或缺的一部分&#xff0c;更是面临着巨大的转型压力。如何完成数字化转型&#xff0c;打破传统经营模式的限制&#xff0c;成为摆在众多餐饮商家面前的一道难…

Windows 10永久关闭“系统准备工具 3.14“禁止开机自启

文章目录 一、问题描述二、解决方法总结 一、问题描述 每次开机都会显示如下图所示的 系统准备工具 3.14 二、解决方法 按win R键打开运行窗口 → 输入cmd → 点击 确定 如图所示输入下面如图所示代码 → 按 回车 → 输入 Y → 按 回车 XCOPY C:\windows\System32\svchost.e…

Apache ShardingSphere实战与核心源码剖析

Apache ShardingSphere实战与核心源码剖析 1.数据库架构演变与分库分表介绍 1.1 海量数据存储问题及解决方案 如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。…

外观缺陷检测原理

产品外观是影响产品质量最重要的因素之一&#xff0c;其平整度、有无瑕疵等不仅影响到产品美观&#xff0c;甚至能够直接影响产品本身的使用和后续加工&#xff0c;给企业带来重大经济损失。 随着人工智能技术的快速发展&#xff0c;机器视觉与AI技术的结合应用加速渗透进工业…

数据可视化实验二:回归分析、判别分析与聚类分析

目录 一、使用回归分析方法分析某病毒是否与温度呈线性关系 1.1 代码实现 1.2 线性回归结果 1.3 相关系数验证 二、使用判别分析方法预测某病毒在一定的温度下是否可以存活&#xff0c;分别使用三种判别方法&#xff0c;包括Fish判别、贝叶斯判别、LDA 2.1 数据集展示&am…

【大语言模型】本地快速部署Ollama运行大语言模型详细流程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【C++提高编程-09】----C++ STL之常用排序算法

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

电商平台数据的认知与深度理解

随着信息技术的迅猛发展&#xff0c;电商平台已成为现代社会商业活动的重要舞台。在这个舞台上&#xff0c;数据不仅是交易的记录&#xff0c;更是企业决策的依据、用户行为的镜子和市场变化的晴雨表。本文将从多个维度对电商平台数据进行全面且深入的认知和理解。 一、数据的…

从WWDC 2023看苹果的未来:操作系统升级与AI技术的融合

引言 在2024年的WWDC&#xff08;苹果全球开发者大会&#xff09;上&#xff0c;苹果公司展示了一系列创新技术和产品&#xff0c;其中最引人注目的莫过于操作系统的升级与AI技术的深度融合。作为一个备受期待的发布会&#xff0c;WWDC不仅向我们展示了苹果在技术上的前瞻性布…

建议收藏:防止外发文件二次泄密的七个办法

防止外发文件二次泄密是一项重要的信息安全管理任务&#xff0c;特别是在涉及敏感信息、商业秘密或知识产权的文档时。以下是一些有效的策略和措施&#xff0c;用以降低文件外发后的泄密风险。 1. 使用加密软件&#xff08;安企神软件&#xff09; 透明加密&#xff1a;对外发…

GPT-4系列模型,在文档理解中的多维度评测

著名云数据平台Snowflake的研究人员发布了一篇论文&#xff0c;主要对OpenAI的GPT-4系列模型进行了研究&#xff0c;查看其文本生成、图像理解、文档摘要等能力。 在DocVQA、InfographicsVQA、SlideVQA和DUDE数据集上对GPT-4、GPT-4 V、GPT-4 Turbo V OCR等进行了多维度测试。…

场外期权在哪个平台可以买卖?

今天带你了解场外期权在哪个平台可以买卖&#xff1f;近年来&#xff0c;随着投资者对个股期权交易的兴趣不断增加&#xff0c;市场上涌现出了许多热门的场外个股期权交易平台&#xff0c;那么在哪个平台可以买卖场外期权&#xff1f; 场外期权在哪个平台可以买卖&#xff1f; …

5G消息 x 融媒 | 媒体融合新入口

5G消息 x 融媒 | 媒体融合新入口 5G 消息是 5G 时代三大运营商联合手机厂商推出的平台型应用&#xff0c;5G 消息以短信为入口&#xff0c;以富媒体消息为媒介&#xff0c;具有权威真实、全面覆盖、精准投放、内容汇聚、开放共享等特点。这些特点符合当下融媒体发展的需求&…

Windows电脑部署Jellyfin服务端并进行远程访问配置详细教程

文章目录 前言1. Jellyfin服务网站搭建1.1 Jellyfin下载和安装1.2 Jellyfin网页测试 2.本地网页发布2.1 cpolar的安装和注册2.2 Cpolar云端设置2.3 Cpolar本地设置 3.公网访问测试4. 结语 前言 本文主要分享如何使用Windows电脑本地部署Jellyfin影音服务并结合cpolar内网穿透工…

6.1 Python 文件类型及常用内置方法

文章目录 1. 文件读写1.1 文件1.2 open函数1. file参数2. mode参数3. encoding参数 1.3 操作文件注意事项1. 操作文件原理2. 操作文件步骤3. 回收系统资源 1.4 上下文管理 2. 模式测试2.1 只写模式1. 文件不存在2. 文件存在 2.2 读模式1. 路径存在2. 路径不存在 2.3 追加模式2.…

​1:25万基础电子地图(江西版)

我们在《50幅1:25万基础电子地图&#xff08;四川版&#xff09;》和《1&#xff1a;25基础电子地图&#xff08;云南版&#xff09;》等文中&#xff0c;为你分享过四川和云南的基础电子地图。 现在我们再为你分享江西的1&#xff1a;25万基础电子地图&#xff0c;你可以在文…

第9章 类

第9章 类 9.1 创建和使用类9.1.1 创建 Dog 类9.1.2 根据类创建实例 9.2 使用类和实例9.2.1 Car 类9.2.2 给属性指定默认值9.2.3 修改属性的值 9.3 继承9.3.1 子类的方法__init__()9.3.2 给子类定义属性和方法9.3.3 重写父类的方法9.3.4 将实例用作属性9.3.5 模拟实物 9.4 导入类…

【AI绘画】文心一格

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…