Hive知识
HIVEQL
CREATE DATABASE financials(创建数据库)
SHOW DATABASES(显示数据库)
SHOW TABLES IN 数据库(列出数据库的所有表)
SHOW DATABASES LIKE 'h.*';(显示类似h以后任意多个字符)
LOCATION '/MY/preferred/directory';(指定数据库存放的路径)
COMMENT '**';(添加一个说明表)
DESCRIBE DATABASE financials(显示finacials数据库的一些信息))
DESCRIBE EXTENDEN table(列出表table的详细属性))
WITH DBPROPERTIES(‘*’,‘*’,)(添加注释说明的信息)
USE financials(切换到某个数据库下)
DROP DATABASE financials;(删除数据库)
ALTER DATABASE financials (修改数据库)
外部表:
CREATE EXTERNAL TABLE stocks(创建外部表)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/data/stocks';
分区表:
CREATE TABLE employees()
PARTITIONED BY(country STRING,state STRING);
一种有效减少io量的手段
//显示分区为us的所有字分区
SHOW PARTITIONS employees PARTITION(country='US')
load data语句
LOAD DATA LOCAL INPATH '${env:HOME}/california-employees'
OVERWRITE INTO TABLE employees
PARTITION (country='us',state='CA');
Insert overwrite语句//把一个没有分区的表变成分区的表方式
INSERT OVERWRITE TABLE employees
PARTITION (country=‘us’,state=‘or’)
SELECT * FROM STAGED_employees se
WHERE se.cnty='us' AND se.st='or';
Dynamic Partition inserts动态分区表
INSERT OVERWRITE TABLE employees
PARTITION (country,state)
SELECT ...., se.cty, se.st
FROM staged_employees se
WHERE se.cnty='us';
Create table ...as select...
CREATE TABLE CA_employees
AS SELECT name,salary,address
FROM emplyees
WHERE se.state='CA' ;
导出数据:
INSERT OVERWRITE LOCAL DIRECTORY'/tmp/data'
SELECT name,salary,address
FROM employees
WHERE se.state='CA'
查询语句select
连接操作:
Hiveql支持大部分常见的关系代数连接方式(各种内连接,外连接,半连接)
连接是缓慢的操作
使用map-side joins来优化连接
25000000=25m;
排序: