zhaoyqiu的数据分析进阶之路2.0

hive相关

2020-07-18  本文已影响0人  喝奶茶不加奶茶

Hive也是数据库的一种,hivesql和mysql使用起来并没有什么不同,数据插入、表关联查询都是一样的,二者都是sql语法。
重点掌握两个:

利用hive命令进入hive窗口,速度会有延迟,这是因为作为数据仓库的hive并不注重查询的时间性,更倾向于数据的分析、保存。所以如果生产系统用hive系统是肯定不合适的。

Hive函数大全

Hive的窗口函数

注意:over()才是窗口函数,而sum、row_number、count只是与over()搭配的分析函数

1、row_number()over()

举例:查出每种性别中年龄最大的两条数据
准备工作:



over()就是进行分组排序的一些操作。(注意在编辑器中写代码时不要有tab缩进,不然复制到hive中会产生错误)

解答代码:

select
*,
row_number() over(partition by sex order by age desc) as rn 
from userinfo;



select *
from 
(select
*,
row_number() over(partition by sex order by age desc) as rn 
from userinfo) t
where rn<=2;

注意:row_number() over()不考虑重复数据,比如如果两个人的年龄一样也会排出先后,不会是相同的排名。
应用:可以用来对数据去重,当想保留一条数据时,就可以让m=1,这样就只取了每组数据的一条记录,达到了去重给的目的。

2、sum() over()

举例:
有一份产品的消费记录数据,要求按时间累计统计到当月的总额
准备工作:



回答:

select
product_name,
month,
money,
sum(money) over(partition by product_name order by month) as all_money
from saleinfo;

小记录:
sql提取某一类别的第一条记录,直接group by 即可,但如果是查询某一类别中的前几条记录,有两个角度,一是利用赋值变量对齐进行排序然后选取要求的行数;另外一个思路是利用窗口函数。

易混概念区分:

1、有海量的数据

2、有对海量数据进行挖掘的需求

3、有对海量数据进行挖掘的软件工具(hadoop、spark、storm、flink、tez、impala......)

#在linux下创建文件student.txt,然后再放到hive中的表中
$ hadoop fs -put hdfs://localhost:9000/user/hive/warehouse/zyq_db/student.txt

#或者在linux中创建数据(vi data.txt--cat data.txt),然后再hive中load data

#load data 命令要在hive中执行
 load data local inpath '/home/frog005/student.txt' into table student;

什么是大数据,hadoop和hdfs又是什么?

上一篇 下一篇

猜你喜欢

热点阅读