[Hive] Hive SQL基础语法总结(基于 Azure云):查看操作命令 + 创建表结构及实例展示

Hive是基于Hadoop之上的类SQL语句,运用SQL来实现对数据进行操作本文是基于 Azure云

查看操作命令

查看 database

show databases
-- namespace中展示所有的数据库(database)名称

其结果展示为:
在这里插入图片描述

查看 table

show tables
-- database中展示当前database名称,这里的默认的database为default
-- tableName中展示所有的表(table)名称
-- isTemporary表示表是否为临时表,true为临时表,false为非临时表

其结果展示为:
在这里插入图片描述

切换database

use experimentdb

show tables

其结果展示为:
在这里插入图片描述
在这里插入图片描述

查看表所在的所有分区

show partitions testtable
-- 显示表名为testtable的表的所有分区

其结果展示为:
在这里插入图片描述

这里需要注意,testtable 必须是已经分区好的表,且其数据已经定义按照哪种方式进行分割

  1. 未分区表会报如下错误
    在这里插入图片描述

  2. 无数据和数据为分割会返回如下结果
    在这里插入图片描述

显示所有函数

show functions
-- function中显示所有函数

其返回结果为:
在这里插入图片描述

创建表结构及实例展示

创建表

创建外部表:

  1. 外部表:删表数据不会丢失
  2. 内部表:删表数据会丢失
CREATE EXTERNAL TABLE IF NOT EXISTS table_name
-- 有EXTERNAL为外部表,无EXTERNAL为内部表
-- IF NOT EXISTS 判断是否存在表名为 table_name 的表,存在则不生成
(
  column1 data_type COMMENT "column1_COMMENTs",
  column2 data_type COMMENT "column2_COMMENTs",
  column3 data_type COMMENT "column3_COMMENTs"
)

COMMENT "table_COMMENTs"

PARTITIONED BY (column_partition data_type COMMENT "column_COMMENTs") --根据哪个column进行分区

CLUSTERED BY (column_cluster) --根据哪个column进行聚类

SORTED BY (column_store ASC/DESC) INTO numb BUCKETS --根据哪个column进行从存储和分几个块(bucket),排序方式有 ASC/DESC两种;用于分桶表;分桶可理解为将一个文件再分成几个小文件

ROW FORMAT -- Row Format :每行之间怎么样进行分割,需根据下面的file格式进行制定

STORED AS file_format -- 该表存储为什么样的数据格式

LOCATION "location_path" --该表保存在哪个路径下

实例展示

创建表

创建一个用于储存 line,employees,apple字段且按照loadDate进行分区的表:

  1. 文件格式为Parquet,因此无需定义ROW FORMAT
  2. 存储位置为:/tmp/databricks-df-yaoyang-example.parquet
CREATE EXTERNAL TABLE IF NOT EXISTS test_daniel 

(
  line STRING COMMENT "department_info",
  employees STRING COMMENT "employees_info",
  apple INT COMMENT "apple_num"
)

COMMENT "department_apple"

PARTITIONED BY (loadDate STRING COMMENT "Load_date_time")

CLUSTERED BY (apple)

SORTED BY (employees ASC) INTO 2 BUCKETS

--ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'

STORED AS Parquet

LOCATION "/tmp/databricks-df-yaoyang-example.parquet"

其结果展示:表示外部表已经创建完成
在这里插入图片描述

向创建的表中添加字段信息

首先,需要有一份已经创建完的原始数据;然后基于该原始数据向创建的表中添加字段及信息

alter table test_daniel add partition(loadDate = "2021-01-15") location "dbfs:/tmp/databricks-df-yaoyang-example.parquet/loaddate=2021-01-15/" 
--其解释为向外部表test_daniel中增加一个loadDate = "2021-01-15"的partition,其信息来自dbfs:/tmp/databricks-df-yaoyang-example.parquet/loaddate=2021-01-15/

其展示结果为:表示数据已经导入完成
在这里插入图片描述

查看导入完信息的外部表

select * from test_daniel
--外部表再原始数据中找不到的字段信息,将显示为null

其展示结果为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AutismThyself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值