美文网首页数据分析
Hive教程 | 从0到1

Hive教程 | 从0到1

作者: 清听 | 来源:发表于2018-11-28 16:00 被阅读8次

站内有朋友私信数据产品经理都需要掌握哪些技能和工具,我给他们的回答:1.数据提取得会:hive 2.数据清洗和整理:hive+Excel+Python 3.数据统计分析:Excel+SPSS+Python 4.数据展示:Excel+PPT+tableau

本文开启hive的基础教程和进阶(长更,有需要的朋友收藏便于阅读)

2018.10.06 建表

第一章 表基础操作(DDL操作+DML元数据存储)

1.1创建分区表 注意:set语句中不能有注释

set hive.exec.dynamic.partition.mode=nonstrict; --动态分区

set hive.exec.dynamic.partition=true;  --动态分区(partition的字段是动态查询写入的)

set hive.exec.max.dynamic.partitions=100000; --总共的最大的动态分区数

set hive.exec.max.dynamic.partitions.pernode=100000;--每个节点上能够生成的最大分区,这个在最坏情况下应该是跟最大分区一样的值

set hive.exec.max.created.files=500000;  --是能够创建的最多文件数(分区一多,文件必然就多了...)

CREATE EXTERNAL TABLE IF NOT EXISTS data_zhp( --如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常

ROWKEY STRING,

STATION INT,

MONTH INT,

DAY INT

HOUR INT ,

MINUTE INT,

)

COMMENT 'ECLP开放预测'

PARTITIONED BY (YEAR INT)

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' --声明文件分隔符

LINES TERMINATED BY '\n' --声明各条记录分隔符

STORED AS TEXTFILE;

--Hive数据文件的存储格式,这里使用的是TEXTFILE,还有SEQUENCEFILE和RCFile,一共三种。

--TEXTFILE是最普通的文件存储格式,内容是可以直接查看。

--SEQUCENFILE是包含键值对的二进制的文件存储格式,支持压缩,可以节省存储空间。是hadoop领域的标准文件格式,但是在hadoop之外却无法使用。

--RCFile是列式存储文件格式,适合压缩处理。对于有成百上千字段的表而言,RCFile更加合适。

 1.2复制空表与复制表及数据

CREATE TABLE sku_id_copy LIKE sku_id;

CREATE TABLE sku_id_copy as

select

*

from sku_id;

2018.10.14 表基础操作增删改

1.3表的增删改

增加一列

ALTER TABLE dev_linshibiao  ADD   COLUMNS (new_col string)

删除dept_id_1\ model列

ALTER TABLE dev_linshibiao  REPLACE COLUMNS (op_time string, dept_name_1string, cw_gmv double)

增加分区

ALTER TABLE dev_linshibiao  ADD   PARTITION (dt=‘2016-06-20’)

删除分区

ALTER TABLE dev_linshibiao  DROP PARTITION (dt=‘2016-06-20’)

删除表

DROP TABLE dev_linshibiao

创建/删除视图

CREATE VIEW [IF NOT EXISTS] view_name [ (column_name [COMMENT column_comment], ...) ][COMMENT view_comment][TBLPROPERTIES (property_name = property_value, ...)] AS SELECT *

如果没有提供表名,视图列的名字将由定义的SELECT表达式自动生成;如果修改基本表的属性,视图中不会体现,无效查询将会失败;视图是只读的,不能用LOAD/INSERT/ALTER

DROP VIEW view_name  删除视图

2018.11.14 表的数据插入

1.4表的插入数据

分区表用overwrite:插入前清空分区

insert overwrite TABLE dev.search_batch_pvuv_zwh partition (dt)

    SELECT  *    FROM XXXXX

不分区的表必须用insert  into

insert  into不清空插入,overwrite插入前清空,表中最后只剩新插入的数据

1.5表加载数据

LOAD DATA LOCAL INPATH './files/XXX.txt' OVERWRITE INTO TABLE XXXX;

--------------我是可爱的分割线,下期预告:查表----------------

没有比人更高的山,比脚更长的路~

第二章 表查询操作(DQL数据查询脚本)

2018.11.28 基本的Select语法

2.1基础查询

SELECT [ALL | DISTINCT] column1, column2, ...

FROM table_XXXX

[WHERE where_aaaa=XXX]

[GROUP BY column1 [HAVING condition]]

[CLUSTER BY column1| [DISTRIBUTE BY column1] [SORT BY | ORDER BY column1]]

[LIMIT number]

1.使用ALL和DISTINCT选项区分对重复记录的处理,默认是ALL,表示查询所有记录;DISTINCT表示去掉重复的记录

2.Where 条件,支持 AND,OR ,between,IN, NOT IN,不支持EXIST ,NOT EXIST

3.ORDER BY与SORT BY的不同,ORDER BY 全局排序,只有一个Reduce任务;SORT BY 只在本机做排序,前者保证在全局进行排序,而后者仅保证在每个reduce内排序,如果有超过1个reduce,sort by可能有部分结果有序

CLUSTER BY 和DISTRIBUTE BY主要用在进行Transform/Map-Reduce脚本。

4.Limit 可以限制查询的记录数,实现Top n查询,一般order by 必须携带limit使用

2.2hive的分区查询

hive表的一个优势便是分区,通过分区可以避免扫全表数据,从而提高数据查询速度,分区限制在where语句中使用

--------------我是可爱的分割线,下期预告:表关联----------------

人的一生,总是为了追寻生命中的光,而走在漫长的旅途中~

第三章 表关联查询

在表设计的过程,考虑表的冗余程度、速度等原因,更多的是面向对象或者面向主题设计,所以需要全面的数据支持,便需要多表关联查询完成。

表的关联的两个手段为JOIN和UNION ALL

3.1 join

常用的join,left outer join ,right outer join , full join ,left semi join

3.1.1 join

Select  a.*  from  tableA  a  join  tableB b  on a.id=b.id

必须等值链接,结果展示a、b表中共有的id部分

3.1.2 left outer join ,right outer join 

Select  a.*  from  tableA  a  left outer join  tableB b  on  a.id=b.id

left outer join right outer join 

3.1.3 full join

Select  a.*  from  tableA  a  full join  tableB b  on a.id=b.id

full join 

3.1.4 left semi join

Select  a.*  from  tableA  a  left semi join  tableB b  on a.id=b.id

等同于join,但是结果只显示a表中字段

join的注意事项:

1.实践中,应该把数据量最大的那个表写在最后关联;

2.限制 join 的输出,应该在 join前WHERE 子句中写过滤条件,或是在 join 后子句中写

3.可以 join 多于 2 个表

4.join容易将数据重复记录,导致计算最后结果错误

3.2 UNION ALL

相同字段的表直接2表合并

SELECT column_name(s)

FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2

相关文章

  • Hive教程 | 从0到1

    站内有朋友私信数据产品经理都需要掌握哪些技能和工具,我给他们的回答:1.数据提取得会:hive 2.数据清洗和整理...

  • 从0到0,从0到1。

    昨天和一客户交流,听到这么一句话,我现在的阶段勉强算0到0的阶段,到那个1的阶段还没有看到,或者说并不知道那个1在...

  • 从 0 到 1 认识从 0 到 1

    看了太多从 0 到 1 的标题了,总感觉那是在乱用流行的标题,记得这个标题是从阿里开始的,从 0 到 1 的书,活...

  • 从0到1太难——Python从0到0.6简明教程

    先说说Python在代码上最直观的特点吧: 每个语句结尾不用写“;” 语句块不需要用“{}”包起来,而是用4个空格...

  • 从1到0,0到1。

    把经历过的一切事情都归零是件很难可以做到的事情,并不会像计算器那么简单。 有时候想,如果人的大脑能像机器那样多好,...

  • Hive 基础搭建教程

    需要安装Hadoop,教程:Hadoop 基础搭建教程 需要了解Hive基本概念:Hive 基础知识 1. 相关依...

  • 从0到1

    【阅读感悟】 书名《书都不会读,你还想成功》 听了猫叔“更好的表达课”,发现自己太差劲了,做什么事都是三分热度,不...

  • 从0到1

    1第一层境界:企业只是制造满足市场需求的产品,只要有原型,工业流水线可以让产品大量地复制生产出来。但产品有生命周期...

  • 从0到1

    1创 造性垄断就是新产品既让大众受益,又可以给创造者带来长期利润。竞争意味着大家都没有利润,产品没有实质差异,而且...

  • 《从0到1》

    经营一个优秀企业的七大问题:工程问题、时机问题、垄断问题、团队问题、销售问题、持久问题、秘密问题。——《从0到1:...

网友评论

    本文标题:Hive教程 | 从0到1

    本文链接:https://www.haomeiwen.com/subject/kbqzqqtx.html