Hive数据存储文件格式
Hive支持的存储数的格式主要有:TEXTFILE(默认格式) 、SEQUENCEFILE、RCFILE、ORCFILE、PARQUET。
textfile为默认格式,建表时没有指定文件格式,则使用TEXTFILE,导入数据时会直接把数据文件拷贝到hdfs上不进行处理;
sequencefile,rcfile,orcfile格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中, 然后再从表中用insert导入sequencefile、rcfile、orcfile表中
行存储与列存储
行式存储下一张表的数据都是放在一起的,但列式存储下数据被分开保存了。
行存储 ...
Hive元数据管理
Metastore
在Hive的具体使用中,首先面临的问题便是如何定义表结构信息,跟结构化的数据映射成功。所谓的映射指的是一种对应关系。在Hive中需要描述清楚表跟文件之间的映
射关系、列和字段之间的关系等等信息。这些描述映射关系的数据的称之为Hive的元数据。该数据十分重要,因为只有通过查询它才可以确定用户编写sql和最终操作文
件之间的关系。
Metadata即元数据。元数据包含用Hive创建的database、table、表的字段等元信息。元数据存储在关系型数据库中。如hive内置的Derby、第三方如MySQL等。
Metastore即元数据服务,是Hive用来管理库表元数据的一个服务 ...
Hive-HQL之DML命令
数据操纵语言DML(Data Manipulation Language),DML主要有三种形式:插入(INSERT)、删除(DELETE)、更新(UPDATE)。要想支持行级insert、update、delete,需要配置Hive支持事务。
事务(transaction)是一组单元化操作,这些操作要么都执行,要么都不执行,是一个不可分割的工作单元。
事务具有的四个要素:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),这四个基本要素通常称为ACID特性。
原子性。一个事务是一个不可再分割的工作单位,事务中的所有 ...
Hive-HQL之面试题
1、连续7天登录的用户
建表和加载数据
123456789101112131415161718192021222324-- 数据。uid dt status(1 正常登录,0 异常)1 2019-07-11 1 1 2019-07-12 11 2019-07-13 1 1 2019-07-14 11 2019-07-15 1 1 2019-07-16 11 2019-07-17 1 1 2019-07-18 12 2019-07-11 1 2 2019-07-12 12 2019-07-13 0 2 2019-07-14 12 2019-07-15 1 2 2019-07-16 02 20 ...
Hive-HQL之自定义函数
当 Hive 提供的内置函数无法满足实际的业务处理需要时,可以考虑使用用户自定义函数进行扩展。
用户自定义函数分为以下三类:
UDF(User Defined Function)。用户自定义函数,一进一出
UDAF(User Defined Aggregation Function)。用户自定义聚集函数,多进一出;类似于:count/max/min
UDTF(User Defined Table-Generating Functions)。用户自定义表生成函数,一进多出;类似于:explode
UDF开发
继承org.apache.hadoop.hive.ql.exec.U ...
Hive-HQL之窗口函数
窗口函数又名开窗函数,属于分析函数的一种。用于解决复杂报表统计需求的功能强大的函数,很多场景都需要用到。
窗口函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。
窗口函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化。
over 关键字
使用窗口函数之前一般要要通过over()进行开窗
1234567891011121314151617181920212223242526272829-- 查询emp表工资总和select sum(sal) from emp;OK_c028225-- 不使用窗口函数,有语 ...
Hive-HQL之系统内置函数
查看系统函数
12345678-- 查看系统自带函数show functions;-- 显示函数的用法信息desc function upper;-- 显示函数的用法信息并且有样例desc function extended upper;
日期函数
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 ...
Hive-HQL之DQL命令
DQL(Data Query Language):数据查询语言。
SQL语句书写注意事项:
SQL语句对大小写不敏感
SQL语句可以写一行(简单SQL)也可以写多行(复杂SQL)
关键字不能缩写,也不能分行
各子句一般要分行
使用缩进格式,提高SQL语句的可读性(重要)
创建表,加载数据
12345678910111213141516171819202122232425262728293031-- 测试数据 /home/hadoop/data/emp.dat7369,SMITH,CLERK,7902,2010-12-17,800,,207499,ALLEN,SALESMAN,769 ...
Hive-HQL之数据操作
数据导入
装载数据(Load)
12LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename[PARTITION (partcol1=val1, partcol2=val2 ...)]
LOCAL:
LOAD DATA LOCAL … 从本地文件系统加载数据到Hive表中。本地文件会拷贝到Hive表指定的位置
LOAD DATA … 从HDFS加载数据到Hive表中。HDFS文件移动到Hive表指定的位置
INPATH:加载数据的路径
OVERWRITE:覆盖表中已有数据;否则表示追加数 ...
Hive-HQL之DDL命令
DDL主要是用在定义、修改数据库对象的结构或数据类型。
DDL(data definition language): 主要的命令有CREATE、ALTER、DROP等。 官方文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
Hive有一个默认的数据库default,在操作HQL时,如果不明确的指定要使用哪个库,则使用默认数据库。
Hive的数据库名、表名均不区分大小写;名字不能使用数字开头;不能使用关键字,尽量不使用特殊符号;
数据库操作
创建数据库
12345CREATE (D ...