HIVE SQL语法笔记

2020-07-01 00:00:00 数据 函数 语句 连接 分区

笔记是基于《Hive编程指南》这本书和在实习过程和面试过程中碰到的问题或者经常使用的语法要点。

P.S. 对应的微信推文连接在下面,现在连看格式对不对都不想看了哈哈哈哈哈,如果觉得有帮助的话,可以关注一下哦~

HIVE SQL语法笔记mp.weixin.qq.com

综述介绍

HIVE是在Hadoop生态系统下数据仓库基础的应用工具,存储基础是Hadoop,通过SQL来对数据进行操作。HIVE将用户的HIVE SQL语句通过解释器转换为MapReduce作业提交到Hadoop集群上,Hadoop执行过程,然后返回执行结果给用户。值得注意的是,HIVE并非为OLTP(联机事务处理)而涉及,并不提供实时的查询和基于行级的数据更新操作。若用户需要对大规模数据使用OLTP功能的话,应该选择NoSQL数据库,即HBase和Cassandra。

  • MapReduce:一种计算模型,可将大型数据处理任务分解成很多单个的、可以在服务器集群中并行执行的任务。Google在名为《MapReduce:大数据之上的简化数据处理》中进行了描述,涉及到两个基本的数据转换操作——map过程和reduce过程,前者将集合中的元素从一种形式转换成另一种形式,转换成0到多个键-值对;后者将值的集合转换成一个值,产生一个键-值对。下面给出WordCount算法的步骤:

上述算法解释如下:①Input框内都表示一个单独的文件,每个文档都会触发一个Mapper进程进行处理;②Mapper都会输出一个键-值对,以单词作为键并以数字1作为值;③Sort过程是按照键-值对进行排序,然后将所有具有相同键的键-值对分发到同一个Reducer中(这里有多种方式决定哪个Reducer获取哪个范围内的键对应的数据);④Reducer将值集合中的频数进行求和然后写入每个单词和终的频数组成的键-值对。

  • Hadoop分布式文件系统/HDFS:一个同类的分布式文件系统,管理着集群中的数据。每个数据块都会被冗余多份(默认3),可以保证不会因某个硬盘损坏导致数据缺失。
在原文中还有对于其他分布式处理工具和数据处理工具和语言的介绍,具体不在本文中列出。

基本概念

  • 外部表EXTERNAL:删除表并不会删除数据,但描述表的元数据信息会被删除掉。
  • 分区表:使用分区来水平分散压力,将数据以一种符合逻辑的方式进行组织,比如分层存储。创建分区表的语法如下:
CREATE TABLE IF NOT EXISTS employees (
    name STRING,
    salary FLOAT,
    subordinated ARRAY<STRING>,
    deductions MAP<STRING, FLOAT>,
    address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT> 
) PARTITIONED BY (year INT, month INT, day INT) --按照州划分数据
LOCATION '/user/hive/warehouse/mydb.db/employees';

相关文章