ALL 和 DISTINCT 可选项指定了查询结果是否反回重复行,默认是ALL(返回所有行)DISTINCT选项去除返回行中重复的结果集
select_expr查询表达式,一般为字段列表,函数(字段转换、日期转换、计数、聚合、求平均等等)常用的比如sum 求和、count 计数、count(distinct xx) 排重计数。
ORDER BY :全局排序,会启动一个reducer对结果集进行排序处理,当结果集非常大时会非常慢,甚至崩溃。
SORT BY :局部排序,每个Reducer内部进行排序,如果reducer数量设为大于1个,那么只能保证每个reducer的结果是有序的。
DISTRIBUTE BY:分区排序,对数据划分分区,指定哪些数据进入某个reducer,这可以解决map、reduct输出的不均衡问题。一般要结合sort by进行分区内排序。
CLUSTER BY:distribute by和sorts by是相同字段时,可以使用cluster by代替。排序只能是升序排序,不能指定顺序还是逆序。
语法 :
(1)load data:表示加载数据
(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表
(3)inpath:表示加载数据的路径
(4)overwrite:表示覆盖表中已有数据,否则表示追加
(5)into table:表示加载到哪张表
(6)student:表示具体的表
(7)partition:表示上传到指定分区
案例 :
2)导入本地数据
3)查看person表数据
2)清空 person表数据; truncate table person;
3)查看person表清空情况(已经没有数据了)
4)导入 HDFS 数据到 person表中
5)重新查询 person表,查看数据情况
2) 导入HDFS,无需添加 local
3) row format delimited fields terminated by '\t' ;
语法:insert into <table> <表名> <查询语句>
案例:
创建一张新表:create table if not exists person2(id int,name string,phone string);
将 person 表中id 为 1和3的数据插入到 person2表中。
查询person2表数据
方式二:into overwrite
语法:insert overwrite table <表名> <查询语句>
测试之前重新准备一张表
向 person6 表中添加数据。
数据结果
注意:使用 insert overwrite 后面必须加上 table ,否则报错
注意
语法 :create table [if not exists] <表名> as <查询语句>
描述 :根据查询结果创建表(查询的结果会添加到新创建的表中)
案例 :
按照person表的结果创建person3表
查询 person3
注意:使用查询结果创建数据表时,需要加入 关键字
管理表
语法 :create table [if not exists] <表名>(字段信息) row format delimited fields terminated by <分割符>location <加载数据路径>
案例 :加载person 表的数据。
查询 person 数据加载的地址
创建 person4 表并设置 person表的数据路径。
查询 person4 表信息;person4中的表数据全部来自于person表。
外部表
创建一个管理表 t1
向管理表t1中添加一条数据
创建t2 并指定t1数据的加载地址
查询 t2 表
删除 t1 表
再次查询 t2 表
验证 t1 为外部表时,删除t1表时,是否会删除数据。
重新创建 t1表
向t1中添加数据3
创建 t2(原来的给删除了)并指定为外部表,并加载 t1的数据路径
查询 t1 表结构(验证是否为外部表
查询 t2 数据(有数据2)
删除t1 表
查询 t2 表(数据并没有删除)
更加深刻理解 管理表和外部表之间的区别。
语法 :import table <全新的表名> from '<Export 导出的地址>';
查询 person_import 表
查看家目录,生成了 一个 aaa目录,目录中有一个 000000_0 文件
查看 000000_0文件;正好是 person表中的数据。
注意:这里的 overwrite 并不是可选项(可加不可加),这里必须加上overwrite ,否则会报错。
查看 000000_0文件;使用了制表符,对数据进行格式化。
查看 /aaa/000000_0 文件
查看person_bak 文件
语法 :hive -e "<sql语句>" > <输出路径>
案例 :
查看家目录中的 person_bak
语法 :export table <表名> to '<HDFS地址>'
案例 :将 person 表的数据导出到 HDFS /person2中
查看 /person2 的层次结构
查看 /person2/data/person
这组函数相对不好理解,下面将结合用户的访问记录数据来进行说明,大家仔细体会。
partition by 指定分组字段,order by 指定排序列并指定顺序还是逆序。
partition by 指定分组字段,order by 指定排序列并指定顺序还是逆序。
取分组内排序后,截止到当前行,第一个值
取分组内排序后,截止到当前行,最后一个值
有一个表 user_cook_recommed(用户推荐菜谱),用sqoop从MySQL导入Hive中,表中有一个字段为array形式,导入到hive中变为String类型,如 4321,4532,337(string),现在需要获得这个array的长度
由于array传入到hive中变为string,需要先用split方法分解为array,再使用size()函数处理
方法一:利用编辑器直接插入控制字符,以Vi为例。进入Vi:Shell代码收藏代码$visupply-20110101txt在Vi命令模式下,键入:setlist,设置控制字符可见,成功后Vi会立即显示一个行结束标志$。填入Hive表中需要的每列数据
以上就是关于大数据之-HIVE入门(十二)全部的内容,包括:大数据之-HIVE入门(十二)、Hive(五)DML数据 *** 作、大数据之-HIVE入门(十九)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)