Hive使用总结

Hive的小小总结

作为大数据Java开发工程师,Hive是必备技能,下面就对自己的学习做一个总结。

创建数据库

CREATE TABLE if not exists 库名.表名 //表名如果不存在则创建Hive表
as

创建分区表

PARTITIONED BY(YEAR INT, MONTH INT,DAY INT)    //根据年月日进行分区操作,表结构中新增年月日三列
ROW FORMAT DELIMITED FIELDS
TERMINATED BY '\001' STORED AS TEXTFILE

数据加载进分区表操作

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
格式2
load data local inpath '/home/had/data1.txt' into table employees partition (country =china,state=Asia)

基于分区表的查询语句

SELECT test_table.* FROM 表名 WHERE d>= '2020-07-06';

删除分区表

ALTER TABLE test_table DROP PARTITION (d='2020-07-08');

Union和Join的用法

Union和Union All的区别

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。不允许有重复数据
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
Union All允许有重复数据,推荐使用Union All。

Join 的用法

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。
数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

//使用连表查询
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

//使用join查询
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

不同的 SQL JOIN
除了我们在上面的例子中使用的 INNER JOIN(内连接),JOIN默认使用内连接,可以省略INNER。 我们还可以使用其他几种连接。
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。

JOIN: 如果表中有至少一个匹配,则返回行(INNER JOIN 与 JOIN)
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行

日期比较函数

1、datediff语法: datediff(string enddate,string startdate)
返回值: int
说明: 返回结束日期减去开始日期的天数。
经常用于返回多少天内的数据

select * from table where  datediff(current_timestamp,create_time)<=30;//查询近30天内的数据

2、日期增加函数: date_add语法: date_add(string startdate, intdays)
返回值: string
说明: 返回开始日期startdate增加days天后的日期

select date_add('2018-12-12',12)//在2018-12-12基础上增加12天

3、日期减少函数: date_sub语法: date_sub (string startdate,int days)
返回值: string

说明: 返回开始日期startdate减少days天后的日期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值