1.Hive基本操作

#创建数据库
hive>create database name;
#创建新表
hive> create table students(id int,name string);
#创建一个新表,结构与其他一样
hive> create table new_students like students;

#创建分区表
hive> create table students(id int,name string) partitioned by(region string);
#删除分区
hive> ALTER TABLE students DROP partition_spec; #从本地文件加载数据,load是单纯的复制/移动操作,overtite会覆盖已有数据
hive> load data local inpath'path1' OVERWRITE INTO TABLE students;
#加载分区表的数据
hive> load data local inpath'paht1' into table students partition(region="Shanghai"); #展示数据库
hive> show databases;
#展示表的分区
hive> show partitions students;
#展示所有表
hive> show tables;
hive> show tables '.*s';
#显示表的结构
hive> describe students;
#显示所有函数
hive> show functions;
#查看函数用法
hive> describe function name_function;
#更新表名
hive> ALTER TABLE name1 RENAME TO name2;
#添加新的一列,并注释
hive> ALTER TABLE students ADD COLUMNS(columns_new int comment "a comment");
#修改列的名字,类型,位置,注释
hive>
#删除表
hive> DROP TABLE students;
#删除表但保留表的结构定义
hive> dfs -rmr /user/hive/warehouse/students; #将查询结果存入Hive表
hive> INSERT OVERWRITE TABLE student [PARTITION(partcol1=val1,partcol2=val2...)] select_statement from from_statement;
#将查询结果存入HDFS文件系统
hive> insert overwrite [local] DIRECTORY directory1 select_statement from from_statement;
#将结果插入不同表中,还能写入分区,hdfs和本地目录
FROM src
INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100
INSERT OVERWRITE DIRECTORY '/tmp/dest2.out' SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200
INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200 and src.key < 300
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/dest4.out' SELECT src.value WHERE src.key >= 300;
#内连接
hive> select sales.*,things.* from sales,things on(sales.id=things.id); #外连接:
hive> SELECT sales.*, things.* FROM sales LEFT OUTER JOIN things ON (sales.id = things.id);
hive> SELECT sales.*, things.* FROM sales RIGHT OUTER JOIN things ON (sales.id = things.id);
hive> SELECT sales.*, things.* FROM sales FULL OUTER JOIN things ON (sales.id = things.id);

#查看hive为某个查询使用多少个MR作业
hive> Explain select sales.*,things.* from sales,things on(sales.id=things.id);

#创建视图
hive> CREATE VIEW valid_records AS SELECT * FROM records2 WHERE temperature !=9999;
#查看视图详细信息
hive> DESCRIBE EXTENDED valid_records;
#删除视图
hive> drop view name_view;

2. Select操作详解

SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list [HAVING condition]]
[ CLUSTER BY col_list
| [DISTRIBUTE BY col_list]]
[SORT BY| ORDER BY col_list]
[limit number]

a.使用ALL和DISTINCT选项区分对重复记录的处理,默认是ALL。

b.Where条件,支持AND,OR,IN ,NOT IN,不支持EXIST 和 NOT EXIST。

c.Order by全局排序,只有一个Reduce任务。Sort by 只在本机做排序。

d.Limit 限制查询记录数

select * from t1 limit 5;

 实现Top K查询

SET mapred.reduce.tasks=1
SELECT * FROM test SORT BY amount DESC LIMIT k;

e.UNION ALL合并多个select的查询结果

select_statement UNION ALL select_statement UNION ALL select_statement ...f.

f. LEFT SEMI JOIN 是 in/exist子查询的更高效的实现。

SELECT a.key,a.value
FROM a
WHERE a.key in
(select b.key from B); =>>
select a.key,a.value from a LEFT SEMI JOIN b on(a.key=b.key);

  

  

 

Hadoop-Hive学习笔记(2)的更多相关文章

  1. hive学习笔记之一:基本数据类型

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. hive学习笔记之三:内部表和外部表

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. hive学习笔记之四:分区表

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. hive学习笔记之五:分桶

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. hive学习笔记之六:HiveQL基础

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. hive学习笔记之七:内置函数

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. hive学习笔记之九:基础UDF

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. hive学习笔记之十:用户自定义聚合函数(UDAF)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<hive学习笔记>的第十 ...

  9. hive学习笔记之十一:UDTF

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  10. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

随机推荐

  1. 在 Linux 中使用 Azure Premium 存储的基本优化指南

    Note 以下测试和结果都是基于 CentOS 6.5.对于其他版本,请参考本文档,并自行进行相关测试. 建议使用最新的内核版本 一般情况下,新的内核版本能解决老版本中存在的问题,添加对新出现硬件的支 ...

  2. Linux ->> UBuntu 14.04 LTE下安装Hadoop 1.2.1(集群分布式模式)

    安装步骤: 1) JDK -- Hadoop是用Java写的,不安装Java虚拟机怎么运行Hadoop的程序: 2)创建专门用于运行和执行hadoop任务(比如map和reduce任务)的linux用 ...

  3. 立即终止Sleep的线程

    在实际工作中,我们需要每隔几分钟从API取数. while(isRunning) { work(); Thread.Sleep(5*60*1000); } 如果设置isRunning=false,也需 ...

  4. <!--注释-->和<%--注释--%>有什么区别

    转载:版权所有:基础软件.作者邮箱:s.j.l.studio@hotmail.com,sun.j.l.studio@gmail.com.本文首发于 http://www.cnblogs.com/Fou ...

  5. mysql 修改已存在的表增加ID属性为auto_increment自动增长

    今天有需要将已经存在表设置自动增长属性 具体如下 alter table customers change id id int not null auto_increment primary key; ...

  6. 读书笔记之JavaScript中的数据类型

    JavaScript严格意义上分为ECMAScript.DOM.BOM.ECMAScript是一门真正意义上的语言,独立于浏览器,浏览器只是它的一个宿主环境.DOM(文档对象模型),为ECMAScri ...

  7. postgresql+postgis+pgrouting实现最短路径查询(3)--流程图

    项目结束,做一个项目的总结汇报,就把最短路径查询的实现流程图画了一下,现在补出来:

  8. websphere8 从安装到部署 测试集群应用程序 安装j2ee程序(非常详细)

    目录1. 准备安装文件2. 安装Installation Manager3. 为Installation Manager指定安装资源库4. 创建部署管理器概要文件5. 创建定制概要文件并联合到部署管理 ...

  9. 请求是如何传递给StandardEngine的?

    将请求的传递过程分解学习. CoyoteAdapter将中持有Connector的引用,所以在Coyote这个类中Connector查找它所属的StandardService,而StandardSer ...

  10. maven工程src/main/java目录无法创建问题

    在项目上右键选择properties,然后点击Javabuild path,在Librarys下,编辑JRE System Library,选择 workspace default jre 即可