Apache Hive--DDL--创建表--分区表创建| 学习笔记

简介: 快速学习 Apache Hive--DDL--创建表--分区表创建

开发者学堂课程【大数据 Hive 教程精讲Apache Hive--DDL--创建表--分区表创建】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/90/detail/1369


Apache Hive--DDL--创建表--分区表创建


内容介绍:

一、Apache Hive--DDL--创建表--分区表创建


一、Apache Hive--DDL--创建表--分区表创建

1、建表语法

CREATE[EXTERNAL] TABLE [IF NOT EXISTS] 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, cor_name,...)

[SORTED BY (col_name [ASC|DESC], ..)] INTO num_buckets BUCKETS]

[ROW FORMAT row_format]

[STORED AS file_format][LOCATION hdfs_path]

2、说明:

(1)、CREATE TABLE 创建一个指定名字的表。

如果相同名字的表已经存在,则抛出异常;

用户可以用 IF NOT EXISTS 选项来忽略这个异常。

(2)EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)。

Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。

(3)LIKE 允许用户复制现有的表结构,但是不复制数据。

CREATE [EXTERNAL]TABLE [IF NOT EXISTS] [db_name.]table_name LlKE existing_table;

4ROW FORMAT DELIMITED

[FIELDS TERMINATED BY char]

[COLLECTION ITEAS TERMINATED BY char][MAP KEYS TERMINATED BY char]

[LINES TERMINATED BY char] | SERDE serde_name[WITH SERDEPROPERTIES

(property_name=property_value, property_name=property_value.)]

hive 建表的时候默认的分割符是’\001',若在建表的时候没有指明分隔符,load 文件的时候文件的分隔符需要是'\001;若文件分隔符不是'001',程序不会报错,但表查询的结果会全部为 'null';

vi 编辑器 Ctrl+v 然后 Ctr1+a 即可输入’\001----------->^A

SerDe Serialize/Deserilize 的简称,目的是用于序列化和反序列化。Hive读取文件机制:首先调用 InputFormat(默认TextInputFormat),返回一条一条记录(默认是一行对应一条记录)。然后调用 SerDe(默认LazySimpleSerDe Deserializer,将一条记录切分为各个字段(默认’\001)

Hive 写文件机制:Row 写入文件时,主要调用 OutputFormatSerDe Seriliazer,顺序与读取相员

可通过 desc formatted 表名;进行相关信息查看。当我们的数据格式比较特殊的时候,可以自定义SerDe

(5)PARTITIONED BY

hive Select 查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了 partition 分区概念。

分区表指的是在创建表时指定的 partition 的分区空间。一个表可以拥有一个或者多个分区,每个分区以文件夹的形式单独存在表文件夹的目录下。表和列名不区分大小写。分区是以字段的形式在表结构中存在,通过 describe table 命令可以查看到字段存在,但是该字段不存放实际的数据内容,仅仅是分区的表示。

1.png

2.png

3.png

①、hive 建立一张表跟已经存在的结构化的数据文件产生映射关系

映射成功之后,就可以通过写sql来分析这结构化的数据避免了写 mr 程序的麻烦

、数据库---/user/hive/warehouse下的一个文件夹对应

---》数据库文件夹下面的子文件夹/user/hive/warehouse/itcast.db/t_t1表的数据位置目前不能随便存放一定要在指定的数据库表的文件夹下面

建立表的时候可能还需要指定分隔符否则有可能映射不成功

、建表的时候一定要根据结构化数据文件的分隔符类型指定分隔符

建表的字段个数和字段类型要跟结构化数据中的个数类型一致

分隔符一般使用内置的来指定 ROW FORMATDELIMITED 分割字段︰还是分割集合等等

、分区表字段不能够在表中已经存在

分区字段是一个虚拟的字段不存放任何数据

分区字段的数据来自于装载分区表数据的时候指定的

相关文章
|
8天前
|
SQL 存储 Oracle
【赵渝强老师】Hive的分区表
Hive的分区表与Oracle、MySQL类似,通过分区条件将数据分隔存储,提高查询效率。本文介绍了静态分区表和动态分区表的创建与使用方法,包括具体SQL语句和执行计划分析,附带视频讲解。静态分区表需显式指定分区条件,而动态分区表则根据插入数据自动创建分区。
|
1月前
|
SQL 分布式计算 Hadoop
Apache Hive 帮助文档
Apache Hive 帮助文档
59 9
|
6月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
SQL 存储 分布式计算
Hive学习---5、分区表和分桶表
Hive学习---5、分区表和分桶表
|
6月前
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
96 0
|
SQL 关系型数据库 MySQL
Hive报错:HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
Hive报错:HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
744 0
|
6月前
|
SQL JSON 算法
hive学习笔记
hive学习笔记
|
6月前
|
SQL 分布式计算 Java
Apache Hudi与Hive集成手册
Apache Hudi与Hive集成手册
355 0
|
6月前
|
SQL 分布式计算 Hadoop
Hadoop学习笔记(HDP)-Part.15 安装HIVE
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
201 1
Hadoop学习笔记(HDP)-Part.15 安装HIVE
|
6月前
|
SQL 分布式计算 MaxCompute
Apache Flink目前不支持直接写入MaxCompute,但是可以通过Hive Catalog将Flink的数据写入Hive表
Apache Flink目前不支持直接写入MaxCompute,但是可以通过Hive Catalog将Flink的数据写入Hive表
96 3

推荐镜像

更多