1. Hive基础
解析器:把SQL映射成MapReduce作业
ThriftServer通信工具,支持跨语言跨平台
Hive工作原理:
Hive作为SQL的解释器,编译器,优化器,用于数值分析
Hive最小处理单元是操作符(作业)
1) Hive把SQL解释成多个操作符,形成抽象语法树
2) 抽象语法树->查询块
3) 查询块->逻辑查询计划
4) 重写逻辑查询计划
5) 逻辑查询计划->物理查询计划(Job)
6) 选择最佳的策略(优化)
Hive的三种工作模式
Hive创建数据表:
加载文件到数据库:
Loaddata local inpath ‘/root/emp.txt’ into table t_temp;(文件中的每个字段的值以,分隔)(本地文件)
Loaddata inpath ‘/input/test.txt’ into table t_temp;(文件中的每个字段的值以,分隔)(HDFS文件,拷贝到指定目录)相同文件加载多次则会创建多个copy文件
创建分区表partition:
Loaddata local inpath ‘sxs.txt’ overwrite into table sxspartition(order_day=’2100-12-12’)所谓的分区表即创建名为order_day=2100-12-12的文件夹保存sxs.txt文件
Insertinto table teo select * from test 将select的查询结果插入到teo表
导出表中的数据到HDFS的指定目录中
Exporttable txt to ‘/input’;
Hive基本数据类型:
联表查询
Limit用于分页显示
Hive创建具有复合类型的表
指定数组项用_分隔
指定map项key:value表示
指定每个属性的分隔符
STOREAS file_format
输出格式
v
创建外部表(EXTERNAL修饰),LOCATION指定表文件存放位置,DROP删除元数据,实际数据不会删除
1) 根据psn1表查询的字段创建表psn3
2) 查询相关字段的结果插入psn3表中
只会根据psn1表的结构创建表psn4
PARTITIONED BY (sex string) 指定分区表名,添加数据时需要指定分区名=分区值
psn5表中添加分区
psn6表删除分区
./hive–-service hiveserver2 启动hiveserver
./beeline检查是否能够连接到hive server
!connect jdbc:hive2://localhost:10000
利用hive进行数据分析时一般步骤:
1) 创建与源数据格式相对应的数据表
2) 导入源数据文件到数据表中
3) 执行SQL语句
Hive UDF和UDAF重点:http://p-x1984.iteye.com/blog/1156392
优化hive:
1) 优化SQL
2) 增加Reduce数量
Hive内置函数:
1. 数学函数
2. 收集函数
3. 类型转换函数
3. 日期函数
1. 条件函数
2. 字符函数
3. 内置的UDAF函数
4. 内置的UDTF函数
Hive自定义函数:
1) UDF,一进一出
2) UDAF,多进一出
3) UDTF,一进多出
Hive优化: