Hive知识
Posted 诸葛小四
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
排序:
以上是关于Hive知识的主要内容,如果未能解决你的问题,请参考以下文章