大数据学习(4)-hive表操作

&&大数据学习&&

🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门

💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博>主哦🤞


1、普通创建表

html 复制代码
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, ...)]

关键字说明:

1TEMPORARY

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

2EXTERNAL (重点)

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

3data_type (重点)

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

基本数据类型如下:

|----------------------------|----------------------------------|---------------|
| Hive | 说明 | 定义 |
| t inyint | 1byte有符号整数 | |
| s mallint | 2byte有符号整数 | |
| i nt | 4byte有符号整数 | |
| b igint | 8byte有符号整数 | |
| b oolean | 布尔类型,true或者false | |
| f loat | 单精度浮点数 | |
| d ouble | 双精度浮点数 | |
| decimal | 十进制精准数字类型 | decimal(16,2) |
| varchar | 字符序列,需指定最大长度,最大长度的范围是[1,65535] | varchar(32) |
| string | 字符串,无需指定最大长度 | |
| t imestamp | 时间类型 | |
| b inary | 二进制数据 | |

复杂数据类型如下;

|--------|------------------------------|-------------------------------|--------------|
| 类型 | 说明 | 定义 | 取值 |
| array | 数组是一组相同类型的值的集合 | array<string> | arr[0] |
| map | map是一组相同类型的键-值对集合 | map<string, int> | map['key'] |
| struct | 结构体由多个属性组成,每个属性都有自己的属性名和数据类型 | struct<id:int, name:string> | struct.id |

注:类型转换

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

方式一: 隐式 转换

具体规则如下:

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

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

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

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

详情可参考Hive官方说明:[++++Allowed Implicit Conversions++++](#Allowed Implicit Conversions)

方式二:显示转换

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

4、PARTITIONED BY (重点)

创建分区表

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

创建分桶表

6、R OW FORMAT (重点)

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

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

html 复制代码
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, ...)]

7STORED AS(重点)

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

8LOCATION

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

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

9TBLPROPERTIES

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

2、Create Table As Select(CTAS)建表

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

html 复制代码
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语法不同,该语法创建出来的表中不包含数据。

html 复制代码
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, ...)]
相关推荐
报错小能手5 小时前
项目——基于C/S架构的预约系统平台 (1)
开发语言·c++·笔记·学习·架构
赤月幼狼5 小时前
clickhouse学习笔记(一)基础概念与架构
笔记·学习·clickhouse
Yupureki7 小时前
从零开始的C++学习生活 13:红黑树全面解析
c语言·数据结构·c++·学习·visual studio
AhriProGramming8 小时前
Python学习快速上手文章推荐(持续更新)
开发语言·python·学习·1024程序员节
泡泡鱼(敲代码中)8 小时前
数据结构(顺序表和链表)
笔记·学习·算法
无妄无望8 小时前
在没有网络的环境下安装包pymysql
学习·docker
酌量9 小时前
基于3D激光点云的障碍物检测与跟踪---(3)基于匈牙利算法的障碍物跟踪
学习·算法·机器人·匈牙利算法·障碍物跟踪
电子云与长程纠缠9 小时前
Blender入门学习04 - 材质
学习·blender
文火冰糖的硅基工坊9 小时前
[人工智能-大模型-21]:“AI 编程工作流”模板(含 prompt 示例)
人工智能·科技·学习·大模型·prompt
讽刺人生Yan10 小时前
RFSOC学习记录(六)混频模式分析
学习·fpga·rfsoc