Hive基础教程

基本命令

切换数据库: use <db_name>;

表重命名:ALTER TABLE table1 RENAME TO table2;

增加表分区

ALTER TABLE table1 ADD IF NOT EXISTS 
PARTITION (year = 2001)
PARTITION (year = 2002)
...;

删除表分区
ALTER TABLE table1 DROP IF EXISTS PARTITION (year = 2001);

重命名列名
ALTER TABLE table1 CHANGE COLUMN <old_col> <new_col>

插入新列

ALTER TABLE table1 ADD COLUMNS(
app_name STRING
session_id LONG);

改变存储格式

ALTER TABLE table1
[PATITION (year = 2001)]
SET FILEFORMAT SEQUENCEFILE;

本地导入数据

LOAD DATA LOCAL INPATH '${env: HOME}/ California/employees'
OVERWRITE INTO TABLE employees
[PARTITION (country = 'US')];

通过查询语句插入数据

INSERT OVERWRITE TABLE employees
[PARTITION(...)]
SELECT * FROM stage_employees se
WHERE se.cnty = 'US' and se.et = 'OR';

通过单个查询语句创建表

CREATE TABLE table1
AS SELECT name, salary, address
FROM employees es
WHERE es.cnty = 'US';

导出数据

INSERT OVERWRITE DIRECTORY '/tmp/ca_employees'
SELECT name, salary, address
FROM employees es
WHERE es.cnty = 'US'

Hive 查询

SELECT col1, col2, col3 FROM table1 WHERE ...可以增加一些数学运算符 或者 自带函数

聚合函数

SELECT count(*), avg(salary) 
FROM employees
GROUP BY cnty;

LIMIT: LIMIT从句用于限制结果的行数

设置列别名

SELECT count(*) as sum_num , avg(salary) as avg_sal
FROM employees
GROUP BY cnty; 

LIKE: 与通配符 % 一起用, %可代替任何内容

HAVING: HAVING从句用来限制 GROUP BY产生的结果的输出。

SELECT avg(salary)
FROM employees
GROUP BY cnty
HAVING avg(salary) >  500;

JOIN

Hive SQL支持JOIN操作,但是只支持等值连接。

inner join

SELECT  a.ymd, a.price, b.price
FROM stocks a inner join stocks b on a.ymd = b.ymd
WHERE a.name = "IBM" and b.name  = "APPLE"

理论上一个JOIN 需要启动一个mapreduce任务,但是当多个表做连接时ON子句的连接键一样的话只启用一个mapreduce任务。

JOIN优化,把大表放在最后 或者 在代码中加入/*+STREAMTABLE(小表)*/

LEFT OUTER JOIN

《Hive基础教程》 image.png

RIGHT OUTER JOIN

《Hive基础教程》 image.png

FULL OUTER JOIN

LEFT SEMI-JOIN

左半边连接 只返回左表中满足on条件的结果。

map-side join

在JOIN时,把小表加载到内存中能够加快JOIN效率。

《Hive基础教程》 image.png

SORT BY、ODER BY 、DISTRIBUTE BY 、CLUSTER BY

ODER BY 对数据做全局排序,最后用一个reduce做排序
SORT BY 对数据做局部排序,在每一个reduce中排序
DISTRIBUTE BY控制map的输出在reduce中是如何划分的。
CLUSTER BY 相当于结合DISTRIBUTE BY 和 SORT BY,对同一列做DISTRIBUTE 和 SORT,但是只支持默认的升序排列。

数值转化

CAST( VALUE AS TYPE)

    原文作者:稀饭里的辣椒
    原文地址: https://www.jianshu.com/p/4b5d202f1de7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注