一. 为什么hive是数据仓库

  1. hive局限于hdfs, 不能进行记录级别的增删改
  2. hive底层的mapreduce启动耗时很长, 无法做到传统数据库的秒查, 只适合离线分析
  3. hive不支持事务, 无法完成OLTP的要求, OLTP选择hbase或cassandera

二. hive安装

  1. 每个hive客户端, 都需要有一个元数据服务来存储元信息(表模式,分区信息), 通常用传统数据库的一个表来存储元信息
  2. hive内部默认用derby存储元信息, 由于derby是单进程存储, 使得不允许两个以上的hive cli执行操作

三.HQL数据操作

  1. 文本文件导入表中

    LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
  2. 动态分区插入 :

     insert  OVERWRITE  TABLE  employees  PARTITION (country, state)  SELECT  *  FROM  staged_employees  se ;
    CREATE TABLE ca_employees AS SELECT name,slary FROM employee WHERE se.state='CA'
  3. 一次查询多次插入

    这种from 后跟多个insert into的语句, 可以只扫描表一次. 而多次插入表, 效率最高

    FROM from_statement
    INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1
    [INSERT INTO TABLE tablename2 [PARTITION ...] select_statement2]
    --1. 建立桶表, 分区表
    CREATE TABLE TESTA
    (person_name string, person_org_name string, level2_org_name string)
    PARTITIONED BY (import_time string)
    CLUSTERED BY (person_name) INTO 8 BUCKETS
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
    STORED AS textfile
    --2.  插入分区数据
    from (select person_name, person_org_name, level2_org_name from iap_app_log_import_minute where import_time in ('2015-01-16-0000', '2015-01-200000')) applog
    insert into table testa partition(import_time = '2015-01')
    select applog.person_name,
    applog.person_org_name,
    applog.level2_org_name

四. 查询语句

  1. sort by + distribute by 与 order by + group by

    (1) order by: 查询语句全局有序

    (2) sort by : 每个reducer内的数据有序, 当reducer的个数为1, sort by的数据据才全局有序 (效率高)

    (3) distribute by : mapreduce会把map输入的键计算哈希值, 把相同哈希值的键值对发往一个reducer.

    (4) cluster by : 先distribute by 再order by , 达到全局有序

  2. 查看partition

    show partitions employees;
    SHOW PARTITIONS employees PARTITION(country='US');
  3. 桶表的抽样查询tablesample

    select * from testa tablesample(bucket 3 out of 10 on  person_name)
  4. laterview

    ageid contact_page
    ontact_page [3, 4, 5]
    ont_page [1, 2, 3]
    SELECT pageid, adid
    FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid;
    ageid adid
    ontact_page 3
    ontact_page 4
    ontact_page 5
    ont_page 1
    ont_page 2
    ont_page 3

五. 其他形式

  1. 视图 : CRETAE VIEW 视图名 AS SLECTSTATEMENT
  2. 索引 :
```sql
CREATE INDEX index_name ON TABLE base_table_name (col_name, ...) AS 'index.handler.class.name' [WITH DEFERRED REBUILD]
--当表的数据发生变化, 自动更新分区内的全部索引
[IDXPROPERTIES (property_name=property_value, ...)]
[IN TABLE index_table_name]
[PARTITIONED BY (col_name, ...)]
[
[ ROW FORMAT ...] STORED AS ...
| STORED BY ...
]
[LOCATION hdfs_path]
[TBLPROPERTIES (...)]
[COMMENT "index comment"]
```

hive查询语句的更多相关文章

  1. hive查询语句入门(hive DDL)

    hive DDL 启动hadoop /apps/hadoop/sbin/start-all.sh 开启MySQL库,用于存放hive的元数据 sudo service mysql start 启动hi ...

  2. Hive通过查询语句向表中插入数据注意事项

    最近在学习使用Hive(版本0.13.1)的过程中,发现了一些坑,它们或许是Hive提倡的比关系数据库更加自由的体现(同时引来一些问题),或许是一些bug.总而言之,这些都需要使用Hive的开发人员额 ...

  3. Hive通过查询语句向表中插入数据过程中发现的坑

    前言 近期在学习使用Hive(版本号0.13.1)的过程中,发现了一些坑,它们也许是Hive提倡的比关系数据库更加自由的体现(同一时候引来一些问题).也许是一些bug.总而言之,这些都须要使用Hive ...

  4. hive操作语句使用详解

    #创建表人信息表  person(String name,int age) hive> create table person(name STRING,age INT)ROW FORMAT DE ...

  5. Hive操作语句实例讲解(帮助你了解 桶 bucket)

    http://blog.sina.com.cn/s/blog_66474b16010182yu.html这篇可以较好地理解什么是外部表external #创建表人信息表  person(String ...

  6. 在shell中判断hive查询记录数大小

     用途: 根据查询到结果数量来判断,是否需要再执行下个脚本. 1. 查询语句script.q脚本如下: ) as count from test; 2. shell脚本如下: 这里注意hive语句需要 ...

  7. Inceptor查询语句

    -- MySQL中的语句都能用,不再一一描述,只记录一些不同 详情见Inceptor 6.0文档 3.4.4查询语句这节 -- 查询语句 SELECT开头,可以通过添加多种从句从Inceptor中的表 ...

  8. SQL Server-简单查询语句,疑惑篇(三)

    前言 对于一些原理性文章园中已有大量的文章尤其是关于索引这一块,我也是花费大量时间去学习,对于了解索引原理对于后续理解查询计划和性能调优有很大的帮助,而我们只是一些内容进行概括和总结,这一节我们开始正 ...

  9. thinkphp中的查询语句

    <?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller { ...

随机推荐

  1. html部分---认识html静态网页;

    html分类:1.静态网页(html/htm)               2.动态网页              区别:动态网页不需要改动源代码,容易修改 css样式表:美化网页 js:脚本语言,增 ...

  2. JAVA常用系统函数

    1.System.out.println("显示信息"); // 显示内容,并自动换行 2.Syetem.out.print("显示信息"); // 显示内容, ...

  3. 10个你能参与并学习的Java开源项目

    本文转载于:http://code.csdn.net/news/2822604 有很多备受关注的初创开源项目,下面列出十个项目是我觉得非常有趣的,涉及到的学习范围也很广.其中有些还在早期阶段,这对我们 ...

  4. 【转】IOS学习笔记29—提示框第三方库之MBProgressHUD

    原文网址:http://blog.csdn.net/ryantang03/article/details/7877120 MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单 ...

  5. libGraphicsMagickWand.so: cannot open shared object file: No such file or directory stack traceback:

    参考博文:http://www.linuxidc.com/Linux/2016-07/133213.htm ==>> Check Passed, the num of bbox and f ...

  6. acess the C\c++ from the Java

    https://en.wikipedia.org/wiki/Java_Native_Interface http://docs.oracle.com/javase/7/docs/technotes/g ...

  7. Clr core

    http://hllvm.group.iteye.com/group/topic/43559

  8. Uinty3d 镜面反射代码

    镜面反射代码 文件名MirrorReflection.cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...

  9. Cannot unwrap to requested type [javax.sql.DataSource]

    遇上这个bug我的情况是这样,hibernate4以后,spring3.1不再有hibernateDaoSupport,在dao层不能继承HibernateDaoSupport, 只能显式声明Sess ...

  10. Web前端开发笔试&面试_04

    >>XDL: 1.在CSS中,选择器的优先级?(如important,id,class 这些……) 2.如何消除行内间隙? Inline-block 3. 如何清除浮动? —— 4. CS ...