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;

排序:

posted @ 2017-05-16 21:52  诸葛小四  阅读(143)  评论(0编辑  收藏  举报