标签:设置 就是 enforce hdf 覆盖 属性 tor 分解 如何
LOAD DATA [LOCAL] IMPATH 'path' [OVERWRITE] INTO TABLE tablename [PARTITION (column = x)];
这里使用了OVERWRITE关键字,之前分区内容会被覆盖掉。这是一次插入。
INSERT OVERWRITE INTO TABLE employees
PARTITION (country = 'US', state = 'OR')
SELECT * FROM staged_employees se
WHERE se.cnty = 'US' AND se.st = 'OR';
以下为多次插入,对多个分区目录插入数据
FROM staged_employees se
INSERT OVERWRITE TABLE employees
PARTITION (country = 'US',state = 'OR')
SELECT * WHERE se.cnty = 'US' AND se.st = 'OR'
INSERT OVERWRITE TABLE employees
PARTITION (country = 'US',state = 'CA')
SELECT * WHERE se.cnty = 'US' AND se.st = 'CA'
···
动态分区插入,会自动根据字段匹配插入数据,这个减少了代码量。根据国家和州,自动分区插入数据。也可以动态和静态混合使用。动态分区功能默认情况下没有开启。
INSERT OVERWRITE TABLE employees
PARTITION (country,state)
SELECT se.cnty,se.st
FROM staged_employees se;
用AS SELECT关键字
CREATE TABLE ca_employees
AS SELECT name,salary,address
FROM employees se
WHERE se.state = 'CA'
INSERT OVERWRITE [LOCAL] DIRECTORY '/path'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
SELECT name, salary, address
FROM employees se
WHERE se.state = 'CA';
SELECT [ALL | DISTINCT] column1,column2
FROM tablename
[WHERE condition]
[GROUP BY col]
[ORDER BY col]
[CLUSTER BY col]
[SOTY BY col]
[LIMIT number]
常用函数:count max min sum avg
正则表达式 %任意个 _一个
SELECT name,salary
CASE
WHEN salary <5000 THEN 'low'
WHEN THEN
ELSE
END
FROM employees;
Hive对某些情况的查询不必启动MapReduce,比如简单查询表存储目录下的文件,包括WHERE过滤条件
Hive只支持等值连接。JOIN ON
分区针对的是数据的存储路径,分桶针对的是数据文件。分桶是将数据集分解成更容易管理的若干部分的一种技术。
创建分桶表
CREATE TABLE tablename(col type)
CLUSTER BY (col)
INTO 4 BUCKETS
//创建分桶表,分成4个桶,有4个文件。
导入数据时,要用MapReduce中的PARTITIONER。这样导入后,目录下有4个文件。
//先设置桶属性
set hive.enforce.bucketing=true;
set mapreduce.job.reduces=-1;//根据桶的个数确定reduce个数,也就是4个。
INSERT INTO TABLE table1
SELECT * FROM table2
对于大数据集,用户需要使用一个具有代表性的查询结果,而不是全部的查询结果,可以通过对表进行抽样来满足这个需求
SELECT * FROM tablename TABLESAMPLE(bucket x out of y on col);
//根据y的大小决定抽样比例
z个桶,(x,y) 抽z/y个桶数据
标签:设置 就是 enforce hdf 覆盖 属性 tor 分解 如何
原文地址:https://www.cnblogs.com/chenshaowei/p/12454445.html