hive

1 table

查看 表
show tables;
查看表结构
desc table_name;

2 database 默认 default

创建database
create database_name;
查看 database
show databases;
使用 database
use database_name;
删除 database
drop database_name;

3 托管表

使用场景,数据的所有处理都由HIVE完成

创建表托管表
create table POI(id STRING,city STRING,name STRING,lon DOUBLE,lat DOUBLE,address STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
载入数据(将本地数据移动到 hdfs:/user/hive/warehourse,注意关键字 LOCAL)
LOAD DATA LOCAL INPATH '/tmp/hive.data' OVERWRITE INTO TABLE poi;
查看数据
select * from poi limit 10;
select count(id) from poi;
删除表
drop table POI

4 外部表
使用场景,如果要用HIVE和其他工具来处理同一个数据集,应该使用外部表

创建外部表 (创建 hdfs:/user/hive/external_talbe)
create external table external_table (dummy STRING) LOCATION '/user/hive/external_talbe' ;
载入数据 (将数据拷贝到 hdfs:/user/hive/external_talbe,)
LOAD DATA LOCAL inpath '/tmp/dummy.txt' into table external_table;
删除表(只会删除元数据,hdfs:/user/hive/external_talbe中数据无变化)
drop table external

5 分区
对表进行划分,分区在创建表时由PARTITIONED BY 子句定义。

创建表
create table logs(ts BIGINT ,line STRING) PARTITIONED BY (dt STRING,country STRING);
载入数据
LOAD DATA LOCAL INPATH '/tmp/partition.data' INTO TABLE logs PARTITION (dt='2010-01-02',country='CN');
查看数据
select * from logs where dt='2010-01-01';

文件存储结构
/user/hive/warehouse/logs
/user/hive/warehouse/logs/dt=2010-01-02
/user/hive/warehouse/logs/dt=2010-01-02/country=CN
/user/hive/warehouse/logs/dt=2010-01-02/country=CN/partition.data

6 分桶
获取更高的查询处理效率,map端连接
取样更高效

创建表
create table bucketed_poi(id STRING,city STRING,name STRING,lon DOUBLE,lat DOUBLE,address STRING) clustered by (id) sorted by(id asc ) into 4 buckets;
导入数据据
insert overwrite table bucketed_poi select * from poi;
取样
hive> select * from bucketed_poi tablesample (bucket 1 out of 4 on id);
hive> select * from bucketed_poi tablesample (bucket 1 out of 4 on rand());//未分桶

文件存储结构

/user/hive/warehouse/bucketed_poi
/user/hive/warehouse/bucketed_poi/000000_0
/user/hive/warehouse/bucketed_poi/000001_0
/user/hive/warehouse/bucketed_poi/000002_0
/user/hive/warehouse/bucketed_poi/000003_0

7 多表插入

FROM SOURCE
INSERT OVERWRITE TABLE TARGET1
SELECT C1,COUNT(C1), GROUPBY C1
INSERT OVERWRITE TABLE TARGET2
SELECT C2,COUNT(C2), GROUPBY C1
INSERT OVERWRITE TABLE TARGET3
SELECT C3,COUNT(C3), GROUPBY C3

8 表修改
重命名表,数据存放目录会改变
ALTER TABLE SOURCE RENAME TO TARGET;
添加列
ALTER TABLE SOURCE ALL COLUMNS (C8 STRING);

9 排序

全排序,解决只有一个reduce
FROM SOURCE
SELECT year,temperature
DISTRIBUTE BY year
SORT BY year ASC,temperature DESC;

10 连接

内连接,HIVE 只支持等值连接、只允许在FROM中出现一个表
SELECT a.* ,b.* FROM a join b on (a.bid = b.aid);
外连接 左外连接,右外连接,全外连接
SELECT a.* ,b.* FROM a LEFT|RIGTH|FULL OUTER JOIN b ON (a.bid = b.aid);
半连接
SELECT * FROM A LEFT SEMI JOIN B ON (A.id = b.id);
类是于 IN
SELECT * FROM A WHERE A.ID IN (SELECT id FROM B);

11 子查询
只支持子查询的出现在SELECT 语句的FROM 子句中

HIVE 简单总结的更多相关文章

  1. HIVE简单操作

    1.hive命令登录HIVE数据库后,执行show databases;命令可以看到hive数据库中有一个默认的default数据库. [root@hadoop hive]# hive Logging ...

  2. Hive入门笔记---1.Hive简单介绍

    1. Hive是什么 Hive是基于Hadoop的数据仓库解决方案.由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性.这是来自官方的解 ...

  3. hive简单的项目实战

    解压user.zip [root@hadoop1 test]# unzip user.zip -d /test/bigdatacase/dataset Archive: user.zip inflat ...

  4. Hive简单优化;workflow调试

    1. 定义job名字 SET mapred.job.name='customer_rfm_analysis_L1'; 这样在job任务列表里可以第一眼找到自己的任务. 2. 少用distinct, 尽 ...

  5. Hive简单安装

    数据库的创建 Hive1版本 在此之前要安装好JDK,HADOOP,下载解压Hive 在root下安装mysql:yum install mysql-server mysql-client //一般M ...

  6. Hive简单编程实践-词频统计

    一.使用MapReduce的方式进行词频统计 (1)在HDFS用户目录下创建input文件夹 hdfs dfs -mkdir input 注意:林子雨老师的博客(http://dblab.xmu.ed ...

  7. Hive—简单窗口分析函数

    hive 窗口分析函数 : jdbc:hive2:> select * from t_access; +----------------+---------------------------- ...

  8. hive简单学习---1

    ---------------------------------------------------------------------------------------------------- ...

  9. hive简单数据分析

    简单查询分析 select brand_id from user_log limit 10; -- 查看日志前10数据 好像也没啥,和SQL相同,,limit取前多少条  , as取别名 查询条数统计 ...

随机推荐

  1. 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群(转载-2)

    原文:http://www.cnblogs.com/PurpleDream/p/4510279.html 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群 前言:       ...

  2. 关于LeetCode的Largest Rectangle in Histogram的低级解法

    在某篇博客见到的Largest Rectangle in Histogram的题目,感觉蛮好玩的,于是想呀想呀,怎么求解呢? 还是先把题目贴上来吧 题目写的很直观,就是找直方图的最大矩形面积,不知道是 ...

  3. <hdu-2032>杨辉三角

    这是杭电hdu上杨辉三角的链接:http://acm.hdu.edu.cn/showproblem.php?pid=2032  Problem Description: 还记得中学时候学过的杨辉三角吗 ...

  4. redis超时问题分析

    redis超时问题分析 06/04. 2014 Redis在分布式应用中占据着越来越重要的地位,短短的几万行代码,实现了一个高性能的数据存储服务.最近dump中心的cm8集群出现过 几次redis超时 ...

  5. python返回null和空的不同

    mysql数据库中有的字段是NULL, 有的字段是空白 写Python脚本,fetchall()得到结果,也是不同. NULL对应的是None, 空白对应的是'' (None, '') 所以根据结果进 ...

  6. 编写简单的爬虫从流行的Scrapy 框架讲起

    到目前为止,我们已经完成了向站点添加搜索和过滤的功能,并且我们已经可以向站点添加一些分类和产品信息.下面我们将考虑当尝试删除实体信息时会发生什么事情. 首先,向站点添加一个名为Test的新分类,然后再 ...

  7. Transform 位置 旋转

    using UnityEngine; using System.Collections; using Box2D.Dynamics; public class BodyGameObj : MonoBe ...

  8. 分布式版本控制系统Git-----3.图形化Tortoisegit创建本地库并且提交到远程服务器上

    [前提你已经有了自己的远程仓库帐号密码和HTTP地址] PS:图形化会方便,但是个人认为还是敲命令比较好,会锻炼人的思维和逻辑. 1.首先在任意一个地方创建test目录.若要把test目录放在Git的 ...

  9. 数据库 Mysql内容补充一

    mysql时间函数 --获取当前日期 select current_date(); --获取当前时间 select current_time(); --获取当前的日期和时间 select now(); ...

  10. 理解Load Average做好压力测试

    http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html CPU时间片 为了提高程序执行效率,大家在很多应用中都采用了多线程模式 ...