(2)、从 HDFS 上导入数据到 Hive 表;
(3)、从别的表中查询出相应的数据并导入到 Hive 表中;
(4)、在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。
1.语法
(1)load data:表示加载数据
(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表
(3)inpath:表示加载数据的路径
(4)overwrite:表示覆盖表中已有数据,否则表示追加
(5)into table:表示加载到哪张表
(6)student:表示具体的表
(7)partition:表示上传到指定分区
2.实 *** 案例
(0)创建一张表
(1)加载本地文件到hive
(2)加载HDFS文件到hive中
上传文件到HDFS
加载HDFS上数据
(3)加载数据覆盖表中已有的数据
上传文件到HDFS
加载数据覆盖表中已有的数据
1.创建一张分区表
2.基本插入数据
3.基本模式插入(根据单张表查询结果)
4.多插入模式(根据多张表查询结果)(有问题,只是查询单表不同分区的)
根据查询结果创建表(查询的结果会添加到新创建的表中)
1.创建表,并指定在hdfs上的位置
2.上传数据到hdfs上
3.查询数据
注意:先用export导出后,再将数据导入。
1.将查询的结果导出到本地
2.将查询的结果格式化导出到本地
3.将查询的结果导出到HDFS上(没有local)
基本语法:(hive -f/-e 执行语句或者脚本 >file)
后续..............................。
注意:Truncate只能删除管理表,不能删除外部表中数据
1.全表查询
2.选择特定列查询
注意:
(1)SQL 语言大小写不敏感。
(2)SQL 可以写在一行或者多行
(3)关键字不能被缩写也不能分行
(4)各子句一般要分行写。
(5)使用缩进提高语句的可读性。
1.重命名一个列
2.便于计算
3.紧跟列名,也可以在列名和别名之间加入关键字‘AS’
4.案例实 ***
查询名称和部门
(1)where针对表中的列发挥作用,查询数据;having针对查询结果中的列发挥作用,筛选数据。
(2)where后面不能写分组函数,而having后面可以使用分组函数。
(3)having只用于group by分组统计语句。
空字段赋值
5.CASE WHEN
需求
求出不同部门男女各多少人。结果如下:
创建本地emp_sex.txt,导入数据
创建hive表并导入数据
按需求查询数据
Order By:全局排序,一个Reducer
1.使用 ORDER BY 子句排序
ASC(ascend): 升序(默认)
DESC(descend): 降序
2.ORDER BY 子句在SELECT语句的结尾
3.案例实 ***
(1)查询员工信息按工资升序排列
(2)查询员工信息按工资降序排列
按照员工薪水的2倍排序
按照部门和工资升序排序
Sort By:每个Reducer内部进行排序,对全局结果集来说不是排序。
1.设置reduce个数
2.查看设置reduce个数
3.根据部门编号降序查看员工信息
4.将查询结果导入到文件中(按照部门编号降序排序)
Distribute By:类似MR中partition,进行分区,结合sort by使用。
注意,Hive要求DISTRIBUTE BY语句要写在SORT BY语句之前。
对于distribute by进行测试,一定要分配多reduce进行处理,否则无法看到distribute by的效果。
案例实 *** :
当distribute by和sorts by字段相同时,可以使用cluster by方式。
cluster by除了具有distribute by的功能外还兼具sort by的功能。但是排序只能是升序排序,不能指定排序规则为ASC或者DESC。
1)以下两种写法等价
注意:按照部门编号分区,不一定就是固定死的数值,可以是20号和30号部门分到一个分区里面去。
从文件加载数据进表(OVERWRITE覆盖,追加不需要OVERWRITE关键字)LOAD DATA LOCAL INPATH 'dim_csl_rule_config.txt' OVERWRITE into table dim.dim_csl_rule_config
--从查询语句给table插入数据
INSERT OVERWRITE TABLE test_h02_click_log PARTITION(dt) select *
from stage.s_h02_click_log where dt='2014-01-22' limit 100
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)