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

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

以上基础统计函数,除了常规的功能外,它还有一个开窗的用法:

over(partition by col order by col asc|desc window_ specification ):

partition by :指定分组字段。

order by : 指定排序顺序。

window specification:指定行的计算范围,可选,不指定默认是从行首到当前行。

窗口规范语法如下:

以sum over为例,通过开窗功能,它可以实现累计求和滑动窗口求和功能。

假如我们要计算当月每个人截至到当天从月初累计到现在的收入总和。传统的方法是计算每天的从月初到当天的汇总,生成子查询或中间表,再用中间表关联上用户每天的汇总数据,来计算占比等数据指标。

同理count over 可以实现累计计数和滑动记数功能;min over 、max over可以实现求累计求最小最大值和滑动窗口的最小最大值功能;avg over可以求实现累计平均和滑动平均数功能。就不一一举例了。

一、故障情景

基于Hive的数据仓库中需要做一张累积快照表,记录了客户发生各个行为的具体日期,比如激活日期、注册日期、申请日期、创建订单日期等等。

这张表需要以激活日期作为分区时间,便于业务查询。

激活日期将近500个日期,在一次性将所有数据全量插入目标分区的时候所有reduce报OOM。

二、解决过程

首先增加reduce端的内存,set mapreducereducejavaopts = -Xmx3072m;set mapreducereducememorymb = 3072;最后将内存设置到集群最高内存,仍然报OOM。

再分析源数据的分类,发现源数据存在以前的测试数据,这样会造成有的分区日期只有一条数据,有的分区天数有几十万数据,数据存在严重的倾斜。

解决方法有两种。

第一种在HQL末尾加上distribute by和sort by,或者cluster by。如下:

insert overwrite table loan_f_milestone partition(day)

select ,

to_date(atv_tim)

from loan_f_milestone_tmp12

distribute by to_date(atv_tim)

sort by to_date(atv_tim)

--cluster by to_date(atv_tim)

distribute by按照指定的字段将数据划分到不同的输出reduce中,可以保证每个reduce处理的数据范围不重叠,每个分区内的数据是没有排序的。

sort by保证一个reduce内的数据按照指定字段排序。

cluster by除了有distribute by的功能,还有sort by的功能,所以最终的结果是每个reduce处理的数据范围不重叠,而且每个reduce内的数据按照指定字段排序,而且可以做到全局排序。

所以第二种方式是设置set hiveoptimizesortdynamicpartition=true;会将动态分区字段全局排序。

笔记:

1窗口函数边界:

复购率: 当前月份购买2次及以上的客户占所有客户比例

回购率:当前月份购买且上个月份也购买的客户占当月所有月份客户比例

思路:

复购率

1、对当月(2月份)的客户分组,计数购买次数

2、筛选购买次数为2以上的,认为是复购群体

回购率

1、筛选当月及上月部分

2、利用客户id进行当月连上月,推荐左连

3、对同一条客户id均有购买记录的,认为是回购群体

注意:

1连接条件中,条件1为客户key字段,表示同一个客户;条件2为两个月的信息连接(本月日期 = 上月日期 +1个月)

2ADD_MONTHS:别忘了有个's',add_months只能对完整日期格式进行月份加减(add_months(‘yyyy-MM-dd hh:mm:ss’,N),add_months(‘yyyy-MM-dd’,N)),所以这里先用concat给'年月'增加一个'日'字段,其中N为正则增加,N为负则减少

第一步:根据用户分组,求出用户购买的产品及顺序

cpzl_zw1是cpzl_zw的上一个购买的产品

第三步:为相邻的产品添加排序(即上面lag函数添加的产品)

若相邻产品的排序为3,则表示第三件产品,题目要求前两件产品,则可以根据小于3进行筛选

步骤:

第一步:将两表进行连接(customer为主表)

第二步:按城市、产品进行聚合分组,求出销量

第三步:窗口函数对销量进行排序

第四步:where进行筛选(where不能直接对窗口函数结果进行筛选,所以要再次使用表子连接)

提示:只用到订单表 ods_sales_orders,并列排序 dense_rank 窗口函数

问题一:蜜蜂怎样过冬? 一只蜜蜂无法度过严寒的冬天。一群蜜蜂则不同。据说蜂箱中的蜜蜂要过冬的时候,往往要抱成一团。最外面的一层是工蜂,它们拼命地煽动着翅膀,像厚厚的衣服一样阻隔着外面的寒冷。在这样严严实实的“包裹”之下,里边的温度恒定在摄氏13度左右,舒适如春。被工蜂“包裹”在里边的不仅有蜂王和雄蜂,还有另外的工蜂。饿了,它们依靠夏天采集来的蜜获得足够的能量。但里面的工蜂并不总在里面呆着,它们还需要到外面来“换岗”。就这样,蜜蜂的家族度过了寒冬。Many insects hibernate or migrate during the winter, but honeybees are more like us, they bundle up and wait for spring When winter es, honeybees form a ball deep in their hive to regulate the hive temperature This means they stay close together, vibrating their wing muscles to generate heat and keep the center of the hive around eighty-six to ninety-five degrees Fahrenheit If the core temperature drops too low, the colony will die Bees also eat a lot of honey to stay warm, and the fastest way to kill off a hive if you’re a beekeeper is to take out too much honey, too late in the season Healthy beehives have at least twenty-thousand bees, and that’s a lot of mouths to feed Some bees on the outside of the ball will not stay warm enough and will die over the course of the winter, but its for the good of the colony (Fortunately, we humans have central heat) With bees one always talks about the colony as a single entity This is because each bee has a very specific role, but together they work as a unit You could say each bee functions like a cell in your body Honeybees start out cleaning the hive and feeding larvae, but will progress to collectors and foragers, and even hive guardians Honeybees try their best to keep the hive clean, so on a warm >>

问题二:小蜜蜂是怎么过冬的 蜜蜂是储藏方式过冬!蜜蜂到了深冬季节,除了取食贮存的蜂蜜获得热量外,还围着蜂王“抱成一团”,组成一个蜂巢团,使蜂巢里的温度保持在35℃左右。如果外层的蜜蜂冷得受不住了,它们就来个里外“换防”。对那些幼虫,工蜂会像称职的保姆那样,每天给幼虫喂食1300多次。同时,工蜂们还聚集在一起,形成一道保温层,使幼虫免受严寒的侵袭。如果幼虫仍感到寒冷,工蜂们便张翅舞足,使蜂房内温度升高。

问题三:蜜蜂冬天怎么养。自己养的。越详细越好。 必须注意以下十点:

一、防热。蜜蜂越冬的适宜温度是-2~8℃。这时蜜蜂在蜂箱内团结靠食蜜糖维持生命,处于休眠状态。但整个越冬期气温在8℃以上的天数较多,蜜蜂活动量大,饲料消耗多,工蜂老化快,不易春繁,会推迟生产期。防热的方法可用通风、洒水、或用电风扇降温。

二、防寒。越冬的蜜蜂处在-2℃以下气温中活动量也会加大。它主要是加大食量,不停地摆腹,靠活动产生热能,抵御严寒。这样既消耗大量饲料,又使工蜂老化缩短寿命。防寒的方法是:小群蜂应在白天多晒太阳,夜晚尽量把桌门关小,填补箱缝和孔洞。

三、防干燥。在长期无雪雨的干燥冬季,要防止蜜蜂口渴干燥,在蜂场内适当喷水、增加湿度,防止蜜蜂燥渴。

四、防潮湿。冬季蜂箱内湿度在70%~80%为最佳,80%以上饲料易变稀、变质,蜜蜂食后易患大肚病和拉痢。如果湿度较大,蜂箱下应放一层塑料薄膜,或在蜂箱周围撒生石灰和干炉渣。在10℃以上的晴朗天气中,可有计划地让蜜蜂进行排泄、爽飞。

五、防闷。蜜蜂在箱内时刻离不开新鲜空气。要防止尸体、杂物堵塞巢门,闷死蜂群。大雪天,更要防止雪将巢门封闭。

六、防病害。蜂箱要保持清洁卫生,注意消毒。冬季老鼠会啃箱吃蜂毁脾。在蜂场如发现老鼠活动,要利用毒饵、器械捕杀。

七、防震。蜜蜂喜欢安静、怕震动。尤其在越冬后期,蜜蜂体质很弱,腹内积粪难以忍受,若受震动往往落脾冻僵死亡。因此,在蜂场内严禁敲击剧烈发声的器械和放鞭炮。

八、防饥饿。整个越冬期的饲料是否优质量足,是越冬成败的基础。优质饲料蜜蜂食后大部分被消化,蜂群安静稳定,寿命长,春繁迅速,不春衰。劣质饲料蜜蜂食后,消化少,剩下渣子多,粪便在肠内容纳不下,易形成大肚病,下痢严重,轻者部分病死,重者全群死亡。优质饲料应在秋末提取封盖时蜜脾。如流蜜过后,应早喂优质糖浆,让蜜蜂充分酿造。

九、防光照。蜜蜂具有趋光性。冬季蜂场如在室外,要予以遮盖避光,尽量减少蜜蜂空飞。

十、防饲料结晶。蜜蜂没有牙齿,饲料结晶蜜蜂无法食用。防结晶的方法:一是用优质蜜作饲料,如槐花蜜,枣花蜜;二是用白糖液作饲料。蜂场过于干燥时要洒水,保持适宜的湿度。

问题四:蜜蜂怎么过冬天呀? 冬季是蜜蜂唯一的短暂休闲时期。但是,寒冷的天气、蜂巢内的低温,对蜜蜂是不利的, 因为蜜蜂是变温动物,它的体温随着周围环境的温度改变。智慧不凡的小蜜蜂想出了特殊的办法抵御严寒。当巢内温度低到13℃时,它们在蜂巢内互相靠拢,结成球形团在一起,温度越低结团越紧,使蜂团的表面积缩小,密度增加,防止降温过多。 据测量,在最冷的时候,蜂球内温度仍可维持在24℃左右。同时,它们还用多吃蜂蜜和加强运动来产生热量,以提高峰巢内的温度。天气寒冷时,蜂球外表温度比球心低,此时在好球表面的蜜蜂向球心钻,而球心的蜂郸向外转移,它们就这样互相照顾,不断地反复交换位置,渡过寒冬。 在越冬结球期间它们是怎样去取食存放在蜂房中的蜜糖的呢聪明的小蜜蜂自有妙法。它们不需解散球体,各自爬出取食,而是通过互相传递的办法得到食料。这样可保持球体内的温度不变或少变,以利于安全越冬。

问题五:蜜蜂在北方怎样过冬 从春季到秋末,在植物开花季节,蜜蜂天天忙碌不息。冬季是蜜蜂唯一的短暂休闲时期。但是,寒冷的天气、蜂巢内的低温,对蜜蜂是不利的,因为蜜蜂是变温动物,它的体温随着周围环境的温度改变。智慧不凡的小蜜蜂想出了特殊的办法抵御严寒。

当巢内温度低到13℃时,它们在蜂巢内互相靠拢,结成球形团在一起,温度越低结团越紧,使蜂团的表面积缩小,密度增加,防止降温过多。据测量,在最冷的时候,蜂球内温度仍可维持在24℃左右。同时,它们还用多吃蜂蜜和加强运动来产生热量,以提高蜂巢内的温度。天气寒冷时,蜂球外表温度比球心低,此时在蜂球表面的蜜蜂向球心钻,而球心的蜂则向外转移,它们就这样互相照顾,不断地反复交换位置,渡过寒冬。

在越冬结球期间它们是怎样去取食存放在蜂房中的蜜糖的呢聪明的小蜜蜂自恭妙法。它们不需解散球体,各自爬出取食,而是通过互相传递的办法得到食料。这样可保持球体内的温度不变或少变,以利于安全越冬。

问题六:蜜蜂是怎么过冬 5分 一般蜜蜂的寿命不超过三个月,但由于蜜蜂的夭折率很高,所以蜜蜂的平均寿命都很低,大概是40多天;

当气温下降低过8度时,蜂群就会在巢内内团结靠食蜜糖维持生命,处于休眠状态。

一防饿 整个越冬期的饲料是否质优量足,是蜜蜂越冬成败的基础。饲料质优,蜜蜂食后大部分被消化掉,蜂群安静稳定、寿命长、不春衰、春繁迅速;饲料质劣,蜜蜂食后消化少,剩下渣子多,粪便在肠内容纳易形成大肚病,轻者部分病死,重者全群灭亡。优质饲料应在秋末提取封盖时蜜脾,以槐花蜜、枣花蜜为最佳;流蜜过后,应早喂优质糖浆或白糖液,让蜜蜂充分酿造。

二防热 蜜蜂越冬的适宜温度是2―8℃,蜂群在箱内团结靠食蜜糖维持生命,处于休眠状态。但整个越冬期气温在8℃以上的天数比较多,蜜蜂活动量大,饲料消耗多,工蜂老化快,不易春繁,故须防热。方法是,可用通风、洒水或吹电风扇降温。

三防寒 越冬的蜜蜂处在-2℃以下气温中活动量也会增大,主要是加大食量,并不停地摆腹,靠活动产生热能抵御严寒。这样,既消耗大量饲料又使工蜂老化缩短寿命。防寒的方法是:小蜂群应在白天多晒太阳,夜晚尽量把巢门关小,填补箱缝和风洞。

四防燥 在长期无雨雪的干燥冬季,应在蜂场内适当喷水,增加湿度,以防止蜜蜂燥渴和饲料干燥结晶。因为蜜蜂没有牙齿,所以饲料结晶干硬就无法食用。

五防潮 冬季蜂箱内的湿度以70%―80%为佳。湿度在80%以上饲料易变稀、变质,蜜蜂食后易拉痢。如果蜂场湿度较大,蜂箱下应放一层塑料薄膜,或在蜂箱周围撒生石灰和干炉渣,也可在10℃以上的晴天中有计划地让蜜蜂进行爽飞、排泄。

六防光 蜜蜂具有趋光的特性,室外光照强时会出箱散飞。冬季蜂场如在室外,就要予以遮盖、避光,以尽量减少蜜蜂空飞而消耗体能。

七防闷 蜜蜂在箱内越冬时刻离不开新鲜空气,所以要防止死蜂尸体、杂物堵塞巢门而闷死。大雪天,更要防止积雪将巢门封闭。

八防震 蜜蜂喜欢安静的环境,怕震动(声响),尤其是在越冬后期体质很弱,腹内积粪难以忍受,若受震动惊吓往往落脾冻僵死亡。因此,在蜂场内严禁敲击发出剧烈声响的器械和燃放鞭炮等。

九防病 蜂箱要保持清洁卫生,注意消毒,防止蜂螨等病虫害发生。

十防敌 冬季,老鼠会啃蜂箱吃蜂毁脾。若在蜂场发现有老鼠活动,则要用毒饵、器械等进行捕杀

问题七:蜜蜂冬天无蜜怎么管理 蜜蜂冬季管理方法,蜜蜂冬季管理,如何帮助蜜蜂安全过冬“立冬”时节,气候严寒,天气变化快,昼夜温差也很大,这个时候如何帮助蜜蜂度过寒冬,冬季养蜂就要注意以下几个方面的问题。

择机并群:并群时机,每年因气候条件而异,不便固定时日,只有当最低气温稳定在5℃以下,最高气温稳定在15℃左右,蜂群处于结团状态,无风晴天上午10时开始至下午2时进行,为良机。一般在“小雪”前后。

并群标准:并群后巢箱内8张~9张大蜜脾,蜂团充满巢箱,约35公斤蜂,能独立越冬群二合一或三合一,非独立越冬群多合一。尤其注意要处理好蜂王,做到多个王笼挂在中间蜂路,前1/3上1/3处。

并群 *** 作:可手指插入脾间,一次提移三张脾,余脾放在并群的继箱上,附蜂用单根软枝条推离,脾提出保存,尽量少扰飞工蜂(蜂扫毛多易激怒和扰飞工蜂),傍晚前没回巢的落地蜂,拾入容器,集中送回箱内。

并后管理:巢箱上加空继箱,当最低气温在0℃以上时,蜂团 ,自由向上膨胀,低于0℃时,加盖复布,低于-5℃时再加棉垫,要折起一角,在蜂团上放块吸足水的海棉。蜂箱安放在终日不见阳光的荫处为最好,若放阳光处,则巢门要背阳,放成单排,上盖厚厚的遮阳物,只为隔光热不是给蜂箱保温。

防空飞:在冬季晴暖天,要经常查看蜂场,发现问题,如伤热、光照、缺水、缺饲料等诱发的空飞,及时处理。

问题八:北方蜜蜂冬天怎么过冬 北方天气寒冷,蜜蜂外出会被冻死,所以要把蜂箱搬屋里去,避光保存,避免蜜蜂看见阳光误以为天气回暖,外出采蜜被冻死

目标:

1、掌握hive基础语法、常用函数及其组合使用

2、掌握一些基本业务指标的分析思路与实现技巧

1)某次经营活动中,商家发起了“异性拼团购”,试着针对某个地区的用户进行推广,找出匹配用户。

注意:如果该表是一个分区表,则where条件中必须对分区字段进行限制

2)选出在2018年12月31日,购买的商品品类是food的用户名、购买数量、支付金额

3)试着对本公司2019年第一季度商品的热度与价值度进行分析。

"2019年一月到三月,每个品类有多少人购买,累计金额是多少"

GROUP BY HAVING(分类汇总过滤)

4)找出在2019年4月支付金额超过5万元的用户,给这些VIP用户赠送优惠券

5)2019年4月,支付金额最多的TOP5用户

查看Hive中的函数:show functions;

查看具体函数的用法:1)desc function 函数名;2)desc function extended函数名;

6)

7)用户的首次激活时间,与2019年5月1日的日期间隔。

datediff(string enddate,string startdate):结束日期减去开始日期的天数

拓展:日期增加函数(增加天数)、减少函数(减少天数) —— date_add、date_sub(类型要是string类型的)

date_add(string startdate,int days)、date_sub(string startdate,int days)

case when 函数

8)统计以下四个年龄段20岁以下、20-30岁、30-40岁、40岁以上的用户数

case when 的时候不用加group by,只有在聚合函数的时候才需要group by

if 函数

9)统计每个性别的用户等级高低分布情况(假设level大于5为高级,注意列名不能使用中文的)

10)分析每个月都拉新情况

substring(stringA,INT start,int len),substr(stringA,INT start,int len),截取起始位置和截取长度

extra1需要解析json字段,然后用$key取出想要获取的value;

extra2使用的是中括号加引号的方式进行字段提取和分组;

两种写法要看字段类型的不同采取不同的方式

11)求不同手机品牌的用户数

12)ELLA用户的2018年的平均每次支付金额,以及2018年最大的支付日期和最小的支付日期的间隔

13)2018年购买的商品品类在两个以上的用户数

步骤总结:

1、先求出每个人购买的商品品类书

2、筛选出购买商品品类书大于2的用户

3、统计符合条件的用户有多少个

14)用户激活时间在2018年,年龄段在20-30岁和30-40岁的婚姻情况分布

步骤总结:

1、先选出激活时间在2018年的用户,并把他们所在的年龄段计算好,并提取出婚姻状况;

如何select后面没有进行聚合,则可以不用使用group by,直接使用where进行过滤就可以;

2、取出年龄段在20-30岁和30-40岁的用户,把他们的婚姻状况转义成可理解的说明;

3、聚合计算,针对年龄段,婚姻状况的聚合

以上就是关于大数据之-HIVE入门(二十)全部的内容,包括:大数据之-HIVE入门(二十)、Hive插入多个分区时OOM故障解决记录、Hive日常数据需求等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/10149410.html

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

发表评论

登录后才能评论

评论列表(0条)

保存