hive原理以及hql语句

本文详细介绍了Hive的数据仓库原理、HQL语句使用,包括创建、查看、修改和删除数据库与表,数据导入、查询、排序、分桶等操作。还探讨了Hive的提速方法,如分区表、分桶表和窗口函数的运用,以及自定义函数的实现。此外,提供了多个实战练习,帮助读者深入理解Hive查询与数据处理。
摘要由CSDN通过智能技术生成

hive提速方法,必看

学习链接

https://blog.csdn.net/u014532291/article/details/105853787

课前概述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

hive的体系架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常用的cli命令(命令行)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图形页面

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


#查询数据库
show databases;
#查询表
show tables;
#使用数据库
use database_name;
#查看表结构
desc table_name;
#删除表
drop table table_name;
格式:
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, col_name, ...) 
  [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
  [ROW FORMAT row_format] 
  [STORED AS file_format] 
  [LOCATION hdfs_path]
 
# 字段解释:
[external] # 申明是否为外部表
 
[if not exists] # 如果表存在,则不创建了
 
[(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] # 在clustered by 里的字段上建立 num_buckets个桶,记录是由 sorted by里的字段排序的。
 
[ROW FORMAT row_format] # 指定分隔符,可以是以下几个:
        : DELIMITED [FIELDS TERMINATED BY char] 
                    [COLLECTION ITEMS TERMINATED BY char] 
                    [MAP KEYS TERMINATED BY char] 

[STORED AS file_format] # 指定load文件的类型,分为:
            textfile 是 纯文本文件
            sequence 是 压缩文件 
[LOCATION hdfs_path] # 向表里加载数据,hdfs_path是一个hdfs上的目录,不能是文件,hive会依据默认配置的hdfs路径,自动将整个目录下的文件都加载到表中。

创建数据库

-- 创建一个数据库,在HDFS上的默认路径为/user/hive/warehouse/*.db
create database mydatabase;
-- 可以使用if exists判断数据库是否已存在(存在则不创建)
create database if not exists mydatabase;
-- 创建一个数据库,并指定其存放路径
create database mydatabase location '/mydatabase.db'; 
-- 创建一个数据库,指定一个已存在的文件夹(my)作为数据库内容的存放位置
create database mydatabase location '/databases/my/';

查看数据库

-- 显示所有数据库
show databases;
-- 模糊搜索
show databases like 'my*';
-- 查看信息
desc database mydatabase;
-- 查看详细信息
desc database extended mydatabase;
-- 切换当前数据库
use mydatabase;

修改数据库

-- 给数据库添加信息
alter database mydatabase set dbproperties('createtime'='202003');
-- 查看上述添加的信息
desc database extended mydatabase;

删除数据库

-- 删除一个空的数据库
drop database mydatabase;
-- 最好使用if exists判断数据库是否存在
drop database if exists mydatabase;
-- 如果数据库不为空,可以采用cascade命令强制删除
drop database mydatabase cascade;

创建表

-- 创建一张表
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值