Hive笔记-2

news2024/12/22 0:08:16

第 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.coloradmin.cn/o/1843501.html

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

相关文章

【数学建模】——【新手小白到国奖选手】——【学习路线】

专栏&#xff1a;数学建模学习笔记 目录 ​编辑 第一阶段&#xff1a;基础知识和工具 1.Python基础 1.学习内容 1.基本语法 2.函数和模块 3.面向对象编程 4.文件操作 2.推荐资源 书籍&#xff1a; 在线课程&#xff1a; 在线教程&#xff1a; 2.数学基础 1.学习内…

Transformer学习理解

1.前言 本文介绍当下人工智能领域的基石与核心结构模型——Transformer&#xff0c;为什么说它是基石&#xff0c;因为以ChatGPT为代表的聊 天机器人以及各种有望通向AGI&#xff08;通用人工智能&#xff09;的道路上均在采用的Transformer。 Transformer也是当下NLP任…

API接口测试要注意什么?API接口如何开发?

API接口怎么保证数据安全&#xff1f;如何安全调用邮件API接口&#xff1f; API接口不仅能够确保系统的稳定性和可靠性&#xff0c;还能提高开发效率和用户满意度。然而&#xff0c;要进行有效的API接口测试&#xff0c;需要注意多个方面。AokSend将介绍一些关键点&#xff0c…

【云原生】Kubernetes----Metrics-Server组件与HPA资源

目录 引言 一、概述 &#xff08;一&#xff09;Metrics-Server简介 &#xff08;二&#xff09;Metrics-Server的工作原理 &#xff08;三&#xff09;HPA与Metrics-Server的作用 &#xff08;四&#xff09;HPA与Metrics-Server的关系 &#xff08;五&#xff09;HPA与…

百万级 QPS 接入层网关架构方案演进

文章目录 前言1、单机架构2、DNS 轮询3、Nginx 单机4、Nginx 主备 Keepalived5、LVS 主备 Keepalived Nginx 集群6、LVS 主备 Keepalived Nginx 集群 DNS 轮询 前言 随着PC、移动互联网的快速发展&#xff0c;越来越多的人通过手机、电脑、平板等设备访问各种各样APP、网…

pdf只要前几页,pdf怎么只要前几页

在现代办公和学习环境中&#xff0c;PDF文件已成为我们日常处理信息的重要工具。然而&#xff0c;有时我们并不需要整个PDF文件的内容&#xff0c;而只是其中的几页。那么&#xff0c;如何高效地提取PDF文件中的特定页面呢&#xff1f;本文将为您介绍几种实用的方法。 打开 “ …

阿里CEO个人投资的智驾公司,走了不一样的路

佑驾创新在去年8月和11月完成两轮融资&#xff0c;在今年5月底递表港交所&#xff0c;目前拿到了29家车企88款车型的量产订单。自动驾驶赛道不缺明星&#xff0c;这些因素本不足以凸显它的差异化。但是在招股书中&#xff0c;一条特殊的发展路线&#xff0c;却让佑驾创新显得不…

搭建开发模式下的以太坊私有链【Geth:1.14.5】

一、为什么用到私有链&#xff1f; 在以太坊的公有链上部署智能合约、发起交易需要花费以太币。而通过修改配置&#xff0c;可以在本机搭建一套以太坊私有链&#xff0c;因为与公有链没关系&#xff0c;既不用同步公有链庞大的数据&#xff0c;也不用花钱购买以太币&#xff0…

2024GLEE生活暨教育(上海)博览会,8月20-22日,国家会展中心(上海)

2024GLEE生活暨教育(上海)博览会将于8月20-22日在中国国家会展中心&#xff08;上海&#xff09;举行&#xff0c;博览会总面积近万平方米&#xff0c;设有美好生活和教育产品两大主力展区&#xff0c;全面覆盖婴幼儿、学龄前、小学、初中、高中、大学、中年、老年各个年龄段的…

2024年了,上大学可以不需要用到电脑吗?

前言 在2024年的今天&#xff0c;电脑已经成为了人们工作生活的一大部分。Oh, no&#xff01;好像手机才是。 好像每个人都是这样的&#xff1a;可以没有电脑&#xff0c;但不能没有手机…… 所以2024年的今天&#xff0c;上大学的小伙伴们可以不需要用到电脑吗&#xff1f;…

DDMA信号处理以及数据处理的流程---cfar检测

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的…

SpringBoot 实现全局异常处理

为什么要使用全局异常处理&#xff1f; 减少冗余代码&#xff1a; 在不使用全局异常处理器的情况下&#xff0c;项目中各层可能会出现大量的try {…} catch {…} finally {…}代码块&#xff0c;这些代码块不仅冗余&#xff0c;还影响代码的可读性。全局异常处理器允许我们在一…

第二十五篇——信息加密:韦小宝说谎的秘诀

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 加密这件事&#xff0c;对于这个时代的我们来说非常重要&#xff0c;那么…

数据分析中的数学:从基础到应用20240617

数据分析中的数学&#xff1a;从基础到应用 数据分析离不开数学的支持&#xff0c;统计学和概率论是其重要组成部分。本文将通过几个具体的实例&#xff0c;详细讲解数据分析中常用的数学知识&#xff0c;并通过Python代码演示如何应用这些知识。 1. 描述性统计 基本概念和用…

java学习--集合(大写二.2)

看尚硅谷视频做的笔记 2.collection接口及方法 jdk8里有一些默认的方法&#xff0c;更多的是体现的是一种规范&#xff0c;规范更多关注的是一些抽象方法。 看接口里面的抽象方法&#xff0c;选一个具体的实现类。 测试collection的方法&#xff0c;存储一个一个数据都有哪些…

ENVI实战—一文搞定监督分类

实验1&#xff1a;利用ROI建立样本训练集和验证集 目的&#xff1a;学会利用ROI建立计算机分类时的样本集 过程&#xff1a; ①导入影像&#xff1a;打开ENVI&#xff0c;选择“打开→打开为→光学传感器→ESA→Sentinel-2”&#xff0c;将Sentinel-2影像导入到ENVI平台中。…

LabVIEW与3D相机开发高精度表面检测系统

使用LabVIEW与3D相机开发一个高精度表面检测系统。该系统能够实时获取三维图像&#xff0c;进行精细的表面分析&#xff0c;广泛应用于工业质量控制、自动化检测和科学研究等领域。通过真实案例&#xff0c;展示开发过程中的关键步骤、挑战及解决方案&#xff0c;确保系统的高性…

MySQL客户端与服务端建立连接抓包分析

文章目录 MySQL客户端与服务端建立连接流程抓包分析1.连接建立流程2.各类数据包介绍2.1挑战数据包2.2认证数据包2.3切换认证插件请求数据包2.4切换认证插件响应数据包2.5成功数据包2.6失败数据包3.注意点4.测试代码MySQL客户端与服务端建立连接流程抓包分析 抓包工具采用的是W…

大厂的 404 页面都长啥样?看到最后一个,我笑了~

每天浏览各大网站&#xff0c;难免会碰到404页面啊。你注意过404页面么&#xff1f;猿妹搜罗来了下面这些知名网站的404页面&#xff0c;以供大家欣赏&#xff0c;看看哪个网站更有创意&#xff1a; 腾讯 网易 淘宝 百度 新浪微博 新浪 京东 优酷 腾讯视频 搜狐 携程 去哪儿 今…

C#——装箱与拆箱详情

装箱与拆箱 装箱: 将值类型转换成引用类型的过程&#xff1b; 拆箱: 把引用类型转为值类型的过程&#xff0c;就是拆箱 装箱 拆箱