您的位置:首页 > 运维架构

hadoop学习笔记--12.hive DML操作

2017-07-31 21:47 369 查看
一、hive DML的基本操作
建议直接参考官方文档:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

1.加载与插入数据

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]


INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]

Where values_row is:
( value [, value ...] )


常见的有以下几个方式:

  1) 加载本地文件到hive表(LOCAL)

    例:load DATA LOCAL INPATH‘/data/user.txt’ INTO table user partition (month =’201707’ ,day=’13’);

  2) 加载hdfs文件到hive中

   例:load DATA INPATH‘/data/user.txt’INTO table user   partition (month =’201707’ ,day=’13’);

  3) 加载数据覆盖表中已有的数据

   例:load data inpath ‘/user/liu/hive/datas/emp.txt’ overwrite into table emp ;

  4) 创建表是通过insert加载别的表已有的数据

    create table emp_ci like emp ;

    insert into table emp_ci select * from emp ;

  5) 创建表的时候通过location指定加载

  6) Import

    create table db_hive.emp like default.emp ;

    import table db_hive.emp from ‘/user/beifeng/hive/export/emp_exp’;

    

2.导出数据

  1. insert [overwrite] [local] directory ‘导出的文件地址’ select * from table_name;

  2. 指定导出的行列格式。

    insert [overwrite] [local] directory ‘文件地址’

ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ COLLECTION ITEMS TERMINATED BY ‘\n’ select * from table_name ;

  3. 查询结果重定向。

    bin/hive -e “select * from emp ;” > /opt/datas/exp_res.txt

  4. export。

    EXPORT TABLE default.emp TO ‘/user/beifeng/hive/export/emp_exp’ ;(HDFS上的目录)

  5. sqoop。

3.删除数据

DELETE FROM tablename [WHERE expression]


4.更新数据

UPDATE tablename SET column = value [, column = value ...] [WHERE expression]


注:hive主要是分析数据的,所以一般不会对数据进行删除或更新。

二、hive 查询
1.hive的分组

  group by

    对查询的数据根据表的某列进行分组。可以配合having一起使用。

     官方参考文档:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+GroupBy

    特别注意:select要选择的字段必须为聚合函数或者在group by后面出现过。

  

2.hive的排序方式

  order by :对全局数据的一个排序,仅仅只有1个reduce

  sort by :对每一个reduce内部数据进行排序的,全局结果集来说不是排序

  distribute by:类似于MapReduce中分区partition,对数据进行分区,结合sort by进行使用使reduce负载均衡。

    注意:distribute by 必须要在sort by 前面。

   cluster by :当distribute by和sort by 字段相同时,可以使用cluster by ;

  官方参考文档:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy

3.hive的Distinct



4.hive的聚合函数

  Hive内部提供了很多函数给开发者使用,包括数学函数,类型转换函数,条件函数,字符函数,聚合函数,表生成函数等等,这些函数都统称为内置函数。

参考本文:http://www.cnblogs.com/MOBIN/p/5618747.html

本文将函数所有的聚合函数都一一说明了。

5.join

  hive连接有很多种形式。分为内连接,左外连接,右外连接,全外连接和半连接。通常会在两个表进行联合分析使用。

本文在这不多做介绍,其实这几种连接方式不同体现在以哪张表为主表而已。举个例子,当A学生表与B课程表联合分析时,A和B都有一列是学生的学号ID。假设A表在前以左外连接的方式联合B表,则返回结果的表以A表为主,A表的关联不上的数据则返回NULL。

可以参考:http://lxw1234.com/archives/2015/06/315.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop hive