大数据之-HIVE入门(十二)

大数据之-HIVE入门(十二),第1张

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入门(十九)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9804330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存