注册

驱动力

其他分类其他2023-05-31
234

目 

06

2023.06

CONTENTS

01

02

03

04

摆摊月入过万有多难?

“AI孙燕姿”成新晋顶流,它是如何训练出来的?

Hive参数与性能企业级调优

10种数据分析的模型思维让你“灵光一闪”

01

摆摊月入过万有多难?

文章来源于有数DataVision ,作者严张攀

3月19日,CCTV13新闻频道午夜档播报了一则题为“为美好生活打拼的‘忙夜人’”采访。面对镜头,在义乌夜市卖狼牙土豆和铁板豆腐的范女士毫不怯场,轻描淡写得表示:“刚开始一年也就赚个十几万。”
“周末收入会高一点,大概(日流水)9000块左右。”
日入万元的摆摊生意顿时引爆整个互联网,苦于求职考公的年轻人们瞬间发现了身边无处不在的财富密码。

在杭州摆摊的一家人,依靠着煎饼果子,月收入超过6万,赶超阿里P7[4];南京摆摊卖花的大福,凭借着“别人卖菜,我卖花,可以饿死,浪漫不死”这一吸引眼球的标语,一天的流水稳定在1500-2000元[5];在咸阳摆摊烧烤的岳磊一天能卖3000串,两个月赚7万[6]...
还有两周赚1万5,毅然辞职卖水果的护士[7];从互联网大厂的裸辞,依靠快餐自助,月收入4万的年轻人[8]等等等等。

回头看央视报道的那位卖狼牙土豆的夫妻,网友早已发出了质疑:一份狼牙土豆加一份铁板豆腐总共16元,那一晚上就得卖562.5份铁板豆腐加狼牙土豆套餐,差不多一分钟就得卖一份,这边做边卖三头六臂都不够用。
摆摊屡屡成为人们热议的话题,毕竟作为一个门槛极低的生意,已经成为很多年轻人,辞职后的首选,甚至是辞职的理由。
那么我们不妨测算一下,想要实现月入过万,到底应该选择什么样的生意?又需要每天卖多少份?
先说明一下我们的测算原则:
  1. 不考虑摊位费、营销费用等灵活开支;
  2. 设备成本选取二手或拼多多售价中最低值;
  3. 售价取常见价格中位数;
  4. 预设首月毛利润10000元,反向推导营业额。

煎饼果子:10个/小时
煎饼果子有两个特点,扛饿不撑,好吃不贵,还能够根据各地饮食习惯酌情调整添加小料。

这种灵活调配的特点使得煎饼果子得以风靡全国,成为打工人的早饭首选,或是下午茶宵夜也同样实用。因此最佳出摊时间是早上4小时,下午或者晚上再来4小时。
根据测算,在不考虑摊位成本的前提下,出摊煎饼果子,只需要客流10人/小时就轻松能实现月入过万,相对刚性的需求和丰富的口味使其本身极具竞争力,找到一个交通要道出摊就基本无需担心客流的问题。
唯一的难点在于手艺,尽管原材料好买,但煎饼果子这东西皮厚了影响味道,皮薄了容易坏,火大了容易烤焦,火小了成不了形,纵使B站上早有成套教学视频,但新手们往往还是脑子会了手不会。
若是顺利度过新手期,煎饼果子确实是摆摊不二之选,甚至还可以和早餐店、烟酒杂货铺共享一个店面以节约成本。

淀粉肠:28根/小时
与其他生意相比,如果想要依靠淀粉肠实现月入过万,难度较高。
首先,淀粉肠通常是以解馋为主,不具备“刚需”属性且口味单一,因此购买客群比较随机;其次论好吃比不上烧烤,论扛饿比不上煎饼果子,地位比较尴尬,因此成交的转化率较低。
测算下来,由于单价和毛利率较低,即使不考虑摊位费的情况下,就算一天经营八小时,仍需要每小时卖上28根才能月入过万,想来除了迪士尼这种景区基本不现实。
要么付出更高的摊位费,把烤肠机摆到景区、热门商圈等拥有巨大流量地带,但如此一来利润极低。要么和其它产品搭配着卖,用于增厚利润。

如果真要说个好处,那就是创业成本足够低,不到200元便能轻松创业,而且完全不需要手艺,烤肠机按个开关就行。

水果糖葫芦:10串/天
水果糖葫芦,虽然与淀粉肠同是解馋小吃,但实现月入过万的目标要更容易。
成本端,主要源于新鲜的水果以及熬糖所需的白糖或冰糖,根据测算每串的成本大约为1.95元。收入方面,通常售价在5-8元之间,如果按照平均售价6.5元测算,只需要客流达到9-10人/小时,便能轻松实现月入过万。
同时,由于本身原料的复杂属性和一定的艺术性,售价上存在更高的溢价空间。
但同时水果和糖水的保质期长短与存放的细节关系较大,卖不出去只能报废。

耳饰:一天一个
耳饰等首饰摊有两大明显优势,近乎无限高的毛利,低损耗。
成本端,从1688上进货,品质一般的进货成本不到1元,品质较好的也只需要5元,而售价却可以无限拔高,整个个人设计师的名头就能卖大几百一对。
若是平价测算,以成本2.48元/对,售价11.5/对的保守估计,毛利率也接近80%,一小时卖四五个便能轻松实现月入过万。
低损耗体现为,相比于食材不到一周的保质期,耳饰如果保存得当,没有生锈和变形的情况,基本不存在放坏的概念。
在不考虑摊位费的情况下,按照上面的成本和售价估计,只需要4-5人/小时的客流便能轻松实现月入过万。
但由于审美的个人属性较强,选品是耳饰这门生意的关键所在,整体来说上限极高,同时也需要更强的运营能力。

卤味熟食:2~3份/小时
卤味熟食有两大优势,高客单价以及中上水平的毛利率。
客单价方面,据券商统计卤味熟食的客单价在20-30元左右,就算是取中间值25元计算,淀粉肠需要卖8根,煎饼果子需要卖4个。
毛利率方面,根据绝味熟食2022年的年报披露,其毛利率水平在56%左右,由于摆摊不涉及卤制过程中的人工工资和机械设备折旧,个人摆摊毛利率保守估计为60%。
由于以上两个特点,实现月收入过万,客流量只需要2-3人/每小时就能实现,几乎是所有摆摊商品对客流量要求最低的。
但作为一个新手,想正式入门卤味熟食,还是需要找一个当地的师傅学习一下,做出符合当地人口味的卤味美食。不然容易孤芳自赏,卖不出去。

创意气球:5个/小时
创意气球是毛利最高,门槛最低的摆摊生意。创意气球毛利率高达90%比肩茅台,售价通常在10元/个左右,成本只要一块钱。
除去人工之外,创意气球最主要的成本是长条气球,而在1688上购买100个气球售价最多只要10块钱,即便加上握棒成本以及吹爆的损耗,平均每个至多1元钱。
摆摊门槛同样低,不需要设备、不需要手艺,一个打气筒就能开工,就这在买气球的时候商家也会免费送。
而高毛利+中等水平的售价,创意气球要实现月入过万的目标,也相对比较轻松,只需要4-5个/小时的客流量就能够满足。
如果运气够好,在幼儿园、小学的门口蹲点,也许放学的半个多小时,就能完成一天的销售目标。
甚至如果不想自己做创意,组合各种形状,也可以直接在1688上买现成的牛马蛙等卡通形象的气球直接卖,多对比几家,成本也大概也就多了几毛钱一个。

鲜花:20支/小时
鲜花,最大的特点是有明显的淡旺季。比如一周之中,往往周末的销量会比周中的销量要好,全年之中,节日的销量会比普通日子的销量要好很多,特别是情人节,女神节等节日。
考虑到阴雨天,并不适宜摆摊卖花,假设节假日带来的销量爆发,刚好可以弥补不出摊带来的损失,则可以按照每日正常出摊且没有淡旺季计算。
成本端,主要的来源为鲜花,通过拼多多查询比较,鲜花的平均每支成本大约在1-2元之间,取平均值1.5元/支;收入端,平常日子鲜花售价大约在3-4元每支,可取平均值3.5元/支。
按照以上数据计算,如果假设,每人只买一支鲜花,要实现每月收入过万,客流量大约需要20-21人/小时,如果一次一束11支,每小时卖两束就够了。
但对于这种具有明显淡旺季的产品,并不适合全职摆摊,也许节假日的时候捞一笔也许比全年赚的还多。毕竟鲜花保质期较短,万一坏了没准还要赔钱。

三明治和包子
三明治和包子的消费场景与煎饼果子几乎一样,都具备填饱肚子的属性,因此一天中最佳的出摊时间也是早上四小时和下午四小时。
除了最外面的两层吐司之外,中间通常都有两层蔬菜和一层,可谓是“十分有料”,因此单个的成本也相对较高,根据小红书上博主披露的数据,折算成本大约为3.53元/个。售价通常在8-12元之间,取平均值为10元/个。
相比于三明治,包子所需材料较少,只有馅和面皮。根据测算,肉馅包子的原料成本较高,通常在0.4元/个左右,菜馅的包子原材料成本较低,通常在0.32元左右,可取平均值0.36元/个。但两者在售价上并没有明显区别,通常价格为2元/个。
假设一个三明治和三个包子能够填饱肚子,按照上午四小时和下午四小时出摊,要实现月入过万,三明治只需要6-7人/小时,包子则为8-9人/小时。难度并不高。
尽管两者对于现场的客流要求不高,但都存在相同的问题,成品需要提前制作且制作所需时间较长,光是凌晨三四点就需要起床准备就足以劝退新手摆摊人。
以三明治为例,食材的购买后,蔬菜需要清洗和剪切,肉类需要煮熟,然后包装,均需要花费大量的时间。包子更是繁琐,面皮需要和面,醒面,擀面皮;馅料需要剪切,搭配,搅拌;最后还要一个个包起来。
如果将售卖和制作流程时间相加,工作强度与996相比也不在话下。而且这种需要预制作的食品,保质期并不长,没卖完就又是一笔额外损耗。

关东煮:18串/小时
相比前两者,关东煮显然是更好的生意。
准备环节,关东煮的这种串串都能够直接从1688或者是拼多多上直接购买,免去了繁杂的制作过程,成本大约在1元/串。
在售卖环节,只需要将各种原材料放在热水里煮熟即可,并且可以根据客流量进行调节,并不需要提前准备太大量。通常荤素搭配,每串售价在3.5元左右,毛利率在70%以上,还没有选品的概念,可谓是新手首选。
假设每人购买量为3串,如要要实现月入过万,关东煮对客流量只需要5-6人/小时便能实现,仅次于卤味熟食。
综合而言,关东煮生意模型相对较好,这一定程度上可以解释为什么全家,罗森的收银台的旁边,基本都有一台关东煮的机器在运作。

以上都是纸上谈兵。
真要摆个摊,摊位到底设在哪首先就是个大学问。每个城市、每条街道、每个路口、甚至每个时间段对于地摊的管理口径都大不相同,甚至有可能今天能摆,明天就不行了,这种政策研究至少是个博士论文级别的难题。
当然,如果选择与城管打游击战,那又是另一套市井文化了。
为了避免这种难题,大多数初入此道的摊主会选择各种“夜市街”“集市街”之类的,拥有合法营运单位经营的点位摆上属于自己的小摊,而这就会产生摊位费。
靠近出入口的黄金点位价格自然更高,店铺生意好也可能被要求缴纳更高费用,名目繁杂的管理费、清洁费、消防费等等费用更是层出不穷...就连高启强那赚不了几个钱的鱼摊,都得面对唐小龙各种名目的盘剥,这其中又少不了一整套的人情往来。
其次,治安是每一个个体户永远绕不过的槛。味道不好、吃坏了肚子、售价过高、或者是单纯的找茬,虽说如今居民整体素质都有显著提高,但近的有长沙炸串店太贵骂上热搜,远一点有唐山打人案,无论哪一种,刚从象牙塔走出的学生或是大厂出来的白领们都无力应对。
最后算下来,大概率摆摊收入,也就和上班领工资差不了多少。更何况工资每个月公司还帮你缴好税、纳上社保直接打卡里,摆一天摊,面对的可就是成百上千个需求完全不同的“甲方爸爸”。
所以摆摊真的是条好出路吗?欢迎各位读者提供建议。

蜜雪冰城和瑞幸咖啡
除去以上的地摊模式,还有一种模式可以选择,那就是加盟。
当下最为火热的加盟里,当属奶茶和咖啡这两个赛道,而在两个赛道之中,又属蜜雪冰城和瑞幸咖啡两者的热度最高。
地摊与加盟之间最大的区别就是创业初始成本。
相对而言,地摊所需的初始成本极低,在以上十种的地摊创业中,煎饼果子由于需要购置逆变器和扒炉铁板一体机两台设备,因此初期投入成本最高,但也仅需要1000元左右,而创意气球,设备要求仅需要一个打气筒还能在购买时赠送,几乎接近0成本。
而加盟的所需的初始成本较高,以蜜雪冰城为例,根据国金证券测算,即便加盟费公认业界最低的蜜雪冰城仅需1.58万,除此之外,前期的装修和设备投入还需要16万,前期总投入大概能买500多辆推车。
尽管瑞幸不需要加盟费,但咖啡制作的设备更贵,据平安证券测算,加盟瑞幸要实现开业,购买设备和装修费用大约需要40万。
由于前期投入极高,因此回本周期(现金回本)是每个加盟商都需要考虑的问题。据官方测算,蜜雪冰城每天卖625杯,正常经营218天回本,瑞幸每天卖350杯,100天就能收回前期成本。

02

在评论区一片“喜欢”、“好听”的赞赏声中,有人思绪飘得更远。
有网友许愿道,想通过 AI 与逝去亲人进行对话,或是让已故歌手重返舞台,再次听见熟悉的声音。还有一些网友认为,AI 的迭代也许能够使声音创造出新的景观:此刻正听孙燕姿唱着《晴天》,下一秒就能播放周杰伦版本的《遇见》;歌曲、歌手、曲风等元素的选择全由自己掌控,实现从“猜你喜欢”到个性化定制的华丽转身。
不过,评论区里对“AI 孙燕姿”的争议也不少。不乏有观众觉得,AI 只是还原了孙燕姿的音色,但好的音乐终究需要有真实情感的加持。也有人觉得,AI 歌手的出现,打翻了专业歌手的饭碗,使其面临下岗的危机。诞生于法律模糊的灰色地带,“AI 孙燕姿”也衍生出了人们对版权、诈骗问题的忧虑。
网民自发使用 AI 合成孙燕姿嗓音歌曲视频尚不属于商业用途,但从知识产权的角度来看,人工智能作为新生事物,还存在着一些争议。上海大邦律师事务所高级合伙人游云庭认为:“根据知识产权法律,用真人语音训练人工智能并生成歌曲的,如果不做商用,大概率不侵权,但发布在网上还是应当先拿到相关的词曲著作权、伴奏音乐、视频使用素材的授权。根据《民法典》,用真人语音训练人工智能并生成歌曲的,必须取得真人的授权,否则涉嫌侵犯人身权。”

“AI孙燕姿”成新晋顶流,
它是如何训练出来的?

文章来源于澎湃美数课 ,作者澎湃美数课

孙燕姿是一代人的青春,“AI 孙燕姿”或许将成为新一代人的青春。2001 年,她横空出世,打败当年同是新人的周杰伦,夺得了台湾金曲奖最佳新人奖。2023 年,网友炼成的“AI 孙燕姿”,翻唱遍了华语名曲,《发如雪》《大城小爱》《Melody》……老歌翻红,“冷门歌手”孙燕姿也是。网友说,2023 最佳新人奖,应该颁给“AI 孙燕姿”。
人们喜欢孙燕姿的声音,而“AI 孙燕姿”就像一枚琥珀,留住了孙燕姿最好的声音。

对“AI 孙燕姿”,大家是什么态度?

我们爬取了 B 站上“AI 孙燕姿”弹幕最多的三个视频的评论区。除了惊叹科技之外,听歌的人还在想什么?

孙燕姿(Stefanie Sun),1978年7月23日出生于新加坡,祖籍广东省潮州市,新加坡流行乐女歌手、音乐制作人 。
2000年,发行首张音乐专辑《孙燕姿》,凭该专辑获得台湾金曲奖“最佳新人奖” 。2001年,凭借音乐专辑《我要的幸福》入围台湾金曲奖“最佳女演唱人奖”。2003年,获得中国金唱片奖  ;同年,发行第七张专辑《The Moment》 。2005年,凭借专辑《Stefanie》获得台湾金曲奖“最佳国语女演唱人奖”;同年,获得MTV日本音乐录像带奖“最佳大中华艺人奖”  。2006年,凭借音乐专辑《完美的一天》获得音乐风云榜港台地区最佳女歌手奖、最受欢迎女歌手奖 。2007年,发行音乐专辑《逆光》  。

当然,也有人好奇“AI 孙燕姿”背后的玄机。怎样才能实现“孙燕姿自由”?

怎样拥有一个 “AI 孙燕姿”?

根据网友提供的教程,制作一首“AI 孙燕姿”演唱的歌曲似乎并不困难。先是通过软件的提取,获得去除噪声、混响和伴奏的原声素材。接着将这些人声素材用于训练孙燕姿的歌声音色转换模型,之后用模型将歌曲的人声替换成孙燕姿,一首由“AI 孙燕姿”翻唱的歌曲便诞生了。
在这一过程中,核心是开源项目 Sovits 的训练使用,简单来说,它就像一个变声器,能实现音色的自由切换。即使对 AI 技术一窍不通的外行,也能够通过教程,打造一个 AI 歌手。这也意味着,歌手的声音能够在数字世界获得了永生。
实际上,在人们对 AI 歌曲的跃跃欲试之前,已有专业歌手做出了尝试——今年 3 月,台湾歌手陈珊妮发布了由 AI 模型演唱的单曲《教我如何做你的爱人》,演唱效果以假乱真。
不仅如此,在 AI 的帮助下,从文字写作到日常对谈,从绘画艺术到音乐制作,人类亲手打开了生成式人工智能的潘多拉魔盒。就像蝴蝶扇动了一下翅膀,AI 正与人类的生活场景发生更为深刻的缠结,带来意想不到的结果。
尽管 AI 在替代歌手发布作品,拓宽了应用场景的同时,带来了诸如版权问题、行业发展等灰色隐忧,但人们总会于探索、惊喜、思忖的情绪交织之中,在 AI 技术更迭的背景之下持续前进——毕竟翻唱歌曲,对于 AI 来说,不过是小菜一碟。

Hive作为大数据平台举足轻重的框架,以其稳定性和简单易用性也成为当前构建企业级数据仓库时使用最多的框架之一。
但是如果我们只局限于会使用Hive,而不考虑性能问题,就难搭建出一个完美的数仓,所以Hive性能调优是我们大数据从业者必须掌握的技能。本文将给大家讲解Hive性能调优的一些方法及技巧。

为什么都说性能优化这项工作是比较难的,因为一项技术的优化,必然是一项综合性的工作,它是多门技术的结合。我们如果只局限于一种技术,那么肯定做不好优化的。
下面将从多个完全不同的角度来介绍Hive优化的多样性,我们先来一起感受下。
🚩1. SQL语句优化
SQL语句优化涉及到的内容太多,因篇幅有限,不能一一介绍到,所以就拿几个典型举例,让大家学到这种思想,以后遇到类似调优问题可以往这几个方面多思考下。
1. union all

03

Hive参数与性能企业级调优

文章来源于五分钟学大数据公众号

Hive性能调优的方式

insert into table stu partition(tp) 
select s_age,max(s_birth) stat,'max' tp 
from stu_ori
group by s_age
union all
insert into table stu partition(tp) 
select s_age,min(s_birth) stat,'min' tp 
from stu_ori
group by s_age;

有人说因为在数据量特别大的情况下使用第一种方式能够有效避免Reduce端的数据倾斜,但是事实如此吗?
我们先不管数据量特别大这个问题,就当前的业务和环境下使用distinct一定会比上面那种子查询的方式效率高。原因有以下几点:
  1. 上面进行去重的字段是年龄字段,要知道年龄的枚举值是非常有限的,就算计算1岁到100岁之间的年龄,s_age的最大枚举值才是100,如果转化成MapReduce来解释的话,在Map阶段,每个Map会对s_age去重。由于s_age枚举值有限,因而每个Map得到的s_age也有限,最终得到reduce的数据量也就是map数量*s_age枚举值的个数。
  2. distinct的命令会在内存中构建一个hashtable,查找去重的时间复杂度是O(1);group by在不同版本间变动比较大,有的版本会用构建hashtable的形式去重,有的版本会通过排序的方式, 排序最优时间复杂度无法到O(1)。另外,第一种方式(group by)去重会转化为两个任务,会消耗更多的磁盘网络I/O资源。
  3. 最新的Hive 3.0中新增了 count(distinct ) 优化,通过配置 hive.optimize.countdistinct,即使真的出现数据倾斜也可以自动优化,自动改变SQL执行的逻辑。
  4. 第二种方式(distinct)比第一种方式(group by)代码简洁,表达的意思简单明了,如果没有特殊的问题,代码简洁就是优!
这个例子告诉我们,有时候我们不要过度优化,调优讲究适时调优,过早进行调优有可能做的是无用功甚至产生负效应,在调优上投入的工作成本和回报不成正比。调优需要遵循一定的原则。
🚩2. 数据格式优化
Hive提供了多种数据存储组织格式,不同格式对程序的运行效率也会有极大的影响。
Hive提供的格式有TEXT、SequenceFile、RCFile、ORC和Parquet等。
SequenceFile是一个二进制key/value对结构的平面文件,在早期的Hadoop平台上被广泛用于MapReduce输出/输出格式,以及作为数据存储格式。
Parquet是一种列式数据存储格式,可以兼容多种计算引擎,如MapRedcue和Spark等,对多层嵌套的数据结构提供了良好的性能支持,是目前Hive生产环境中数据存储的主流选择之一。
ORC优化是对RCFile的一种优化,它提供了一种高效的方式来存储Hive数据,同时也能够提高Hive的读取、写入和处理数据的性能,能够兼容多种计算引擎。事实上,在实际的生产环境中,ORC已经成为了Hive在数据存储上的主流选择之一。
我们使用同样数据及SQL语句,只是数据存储格式不同,得到如下执行时长:

我们简单分析上面的SQl语句,就是将每个年龄的最大和最小的生日获取出来放到同一张表中,union all 前后的两个语句都是对同一张表按照s_age进行分组,然后分别取最大值和最小值。对同一张表相同的字段进行两次分组,这造成了极大浪费,我们能不能改造下呢,当然是可以的,为大家介绍一个语法:from ... insert into ... ,这个语法将from前置,作用就是使用一张表,可以进行多次插入操作:

上面的SQL就可以对stu_ori表的s_age字段分组一次而进行两次不同的插入操作。
这个例子告诉我们一定要多了解SQL语句,如果我们不知道这种语法,一定不会想到这种方式的。
2. distinct
先看一个SQL,去重计数:

这是简单统计年龄的枚举值个数,为什么不用distinct?

--开启动态分区 
set hive.exec.dynamic.partition=true; 
set hive.exec.dynamic.partition.mode=nonstrict; 
from stu_ori 
insert into table stu partition(tp) 
select s_age,max(s_birth) stat,'max' tp 
group by s_age
insert into table stu partition(tp) 
select s_age,min(s_birth) stat,'min' tp 
group by s_age;

select count(1) 
from( 
  select s_age 
  from stu 
  group by s_age 
) b;

select count(distinct s_age) 
from stu;

当然得是在系统资源比较空闲的时候才有优势,否则没资源,并行也起不来。
🚩5. 数据倾斜优化
数据倾斜的原理都知道,就是某一个或几个key占据了整个数据的90%,这样整个任务的效率都会被这个key的处理拖慢,同时也可能会因为相同的key会聚合到一起造成内存溢出。
Hive的数据倾斜一般的处理方案:
常见的做法,通过参数调优:

*注:CPU时间:表示运行程序所占用服务器CPU资源的时间。
         用户等待耗时:记录的是用户从提交作业到返回结果期间用户等待的所有时间。
查询TextFile类型的数据表CPU耗时33分钟, 查询ORC类型的表耗时1分52秒,时间得以极大缩短,可见不同的数据存储格式也能给HiveSQL性能带来极大的影响。

🚩3. 小文件过多优化
小文件如果过多,对 hive 来说,在进行查询时,每个小文件都会当成一个块,启动一个Map任务来完成,而一个Map任务启动和初始化的时间远远大于逻辑处理的时间,就会造成很大的资源浪费。而且,同时可执行的Map数量是受限的。
所以我们有必要对小文件过多进行优化,关于小文件过多的解决的办法,我之前专门写了一篇文章讲解,具体可查看:《解决hive小文件过多问题》👈🏻点击跳转

🚩4. 并行执行优化
Hive会将一个查询转化成一个或者多个阶段。这样的阶段可以是MapReduce阶段、抽样阶段、合并阶段、limit阶段。或者Hive执行过程中可能需要的其他阶段。默认情况下,Hive一次只会执行一个阶段。不过,某个特定的job可能包含众多的阶段,而这些阶段可能并非完全互相依赖的,也就是说有些阶段是可以并行执行的,这样可能使得整个job的执行时间缩短。如果有更多的阶段可以并行执行,那么job可能就越快完成。
通过设置参数hive.exec.parallel值为true,就可以开启并发执行。在共享集群中,需要注意下,如果job中并行阶段增多,那么集群利用率就会增加。

set hive.exec.parallel=true; //打开任务并行执行
set hive.exec.parallel.thread.number=16; //同一个sql允许最大并行度,默认为8。

数据格式 CPU时间 用户等待耗时
TextFile   33分 171秒
SequenceFile 38分 162秒
Parquet 2分22秒 50秒
ORC 1分52秒 56秒

set hive.map.aggr=true;  
set hive.groupby.skewindata = ture;

当选项设定为true时,生成的查询计划有两个MapReduce任务。
在第一个MapReduce中,map的输出结果集合会随机分布到reduce中,每个reduce做部分聚合操作,并输出结果。
这样处理的结果是,相同的Group By Key有可能分发到不同的reduce中,从而达到负载均衡的目的;
第二个MapReduce任务再根据预处理的数据结果按照Group By Key分布到reduce中(这个过程可以保证相同的Group By Key分布到同一个reduce中),最后完成最终的聚合操作。
但是这个处理方案对于我们来说是个黑盒,无法把控。
那么在日常需求的情况下如何处理这种数据倾斜的情况呢:
  1. sample采样,获取哪些集中的key;
  2. 将集中的key按照一定规则添加随机数;
  3. 进行join,由于打散了,所以数据倾斜避免了;
  4. 在处理结果中对之前的添加的随机数进行切分,变成原始的数据。
例:如发现有90%的key都是null,数据量一旦过大必然出现数据倾斜,可采用如下方式:

SELECT *
FROM a
 LEFT JOIN b ON CASE 
   WHEN a.user_id IS NULL THEN concat('hive_', rand())
   ELSE a.user_id
  END = b.user_id;

由于s2为NULL补充表,所以s2.key>2过滤条件不能下推。
那么谓词下推的规则是什么,到底什么时候会进行下推,什么时候不会下推,总结了下面的一张表,建议收藏保存:

注意:给null值随机赋的值不要与表中已有的值重复,不然会导致结果错误。
🚩6. Limit 限制调整优化
一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果。
有一个配置属性可以开启,避免这种情况:对数据源进行抽样。
hive.limit.optimize.enable=true -- 开启对数据源进行采样的功能
hive.limit.row.max.size -- 设置最小的采样容量
hive.limit.optimize.limit.file -- 设置最大的采样样本数
缺点:有可能部分数据永远不会被处理到
🚩7. JOIN优化
1. 使用相同的连接键
当对3个或者更多个表进行join连接时,如果每个on子句都使用相同的连接键的话,那么只会产生一个MapReduce job。
2. 尽量尽早地过滤数据
减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段。
3. 尽量原子化操作
尽量避免一个SQL包含复杂逻辑,可以使用中间表来完成复杂的逻辑。
8. 谓词下推优化
Hive中的 Predicate Pushdown 简称谓词下推,简而言之,就是在不影响结果的情况下,尽量将过滤条件下推到join之前进行。谓词下推后,过滤条件在map端执行,减少了map端的输出,降低了数据在集群上传输的量,节约了集群的资源,也提升了任务的性能。
我们看下面这个语句:

s2表不是保留行,所以s2.key>2条件可以下推到s2表中,也就是join之前执行。
再看下面这个语句:

上面是一个Left Join语句,s1是左表,称为保留行表,s2是右表。
问:on条件的s1.key > '2' 是在join之前执行还是之后?也就是会不会进行谓词下推?
答:不会进行谓词下推,因为s1是保留行表,过滤条件会在join之后执行。
而下面这个语句:

select s1.key, s2.key 
from s1 left join s2 
on s1.key > '2';

select s1.key, s2.key 
from s1 left join s2 
on s2.key > '2';

右表s2为NULL补充表。
s1不是NULL补充表,所以s1.key>2可以进行谓词下推。
而下面语句:

select s1.key, s2.key 
from s1 left join s2 
where s2.key > '2';

select s1.key, s2.key 
from s1 left join s2 
where s1.key > '2';

--案例:
select a.*  
from a  
left join b on a.uid = b.uid  
where a.ds='2020-08-10'  
and b.ds='2020-08-10'

上面这个SQL主要犯了两个错误:
右表(上方b表)的where条件写在join后面,会导致先全表关联在过滤分区。
*注:虽然a表的where条件也写在join后面,但是a表会进行谓词下推,也就是先执行where条件,再执行join,但是b表不会进行谓词下推!
on的条件没有过滤null值的情况,如果两个数据表存在大批量null值的情况,会造成数据倾斜。
最后
代码优化原则:
  • 理透需求原则,这是优化的根本;
  • 把握数据全链路原则,这是优化的脉络;
  • 坚持代码的简洁原则,这让优化更加简单;
  • 没有瓶颈时谈论优化,这是自寻烦恼。
-end-

很多人都说会数据分析的人比别人聪明,实际上他们“聪明”在拥有模型化的分析思维,今天我们就来说说常见的数据分析思维。
以下10种数据分析思维可能不会瞬间升级你的思维模式,但说不定会为你以后的工作带来“灵光一闪”的感觉,请耐心读完,灵光一闪的时候别忘了我。
一、分类思维
日常工作中,客户分群、产品归类、市场分级……许多事情都需要有分类的思维。关键在于,分类后的事物,需要在核心关键指标上能拉开距离!也就是说,分类后的结果必须是显著的。

04

10种数据分析的模型思维
让你“灵光一闪”

文章来源于阿里开发者公众号,作者丁文祥(望文)

如图,横轴和纵轴往往是你运营当中关注的核心指标(当然不限于二维),而分类后的对象,你能看到他们的分布不是随机的,而是有显著的集群的倾向。
打个比方,经典的RFM模型依托收费的3个核心指标构建用户分群体系:最近一次消费时间(Recency)、消费频率(Frequency)、消费金额(Monetary)。

在R/M/F三个指标上,我们通过经验将实际的用户划分为以下8个区(如上图),我们需要做的就是促进不同的用户向更有价值的区域转移。也就是将每个付费用户根据消费行为数据,匹配到不同的用户价值群体中,然后根据不同付费用户群体的价值采用不同的策略(如下表)。

分类用于很多场景,比如用户分类(新老、活跃度、消费力水平分类等),商品分类(价格带、规格、用户需求等)。数据挖掘或者机器学习中很大一部分是解决分类问题,把具有某些共同点或相似特征的分为一组,这样更便于管理和做一些业务的精细化运营,也方便我们研究同类事物的共性和差异,便于理解其特性和用户需求。但要知道分类只是一种手段,不要为了分类而分类。
常见的分类方法:
  1. (1) 业务规则
  2. (2) 统计分析,指标项表现形似的归为一组
  3. (3) 机器学习/模型
  • 朴素贝叶斯(Bayes)
  • 决策树(Decision Tree)
  • 支持向量机(Suport Vector Machine)
  • K近邻 (KNN)
  • 逻辑回归(Logistic Regression)

象限法是一种策略驱动的思维,常与产品分析、市场分析、客户管理、商品管理等。比如,下图是一个广告点击的四象限分布,X轴从左到右表示从低到高,Y轴从下到上表示从低到高。

二、矩阵思维
分类思维的发展之一是矩阵思维,矩阵思维不再局限于用量化指标来进行分类。许多时候,我们没有数据做为支持,只能通过经验做主观的推断时,是可以把某些重要因素组合成矩阵,大致定义出好坏的方向,然后进行分析。大家可以百度经典的管理分析方法“波士顿矩阵”模型。

高点击率高转化的广告,说明人群相对精准,是一个高效率的广告。高点击率低转化的广告,说明点击进来的人大多被广告吸引了,转化低说明广告内容针对的人群和产品实际受众有些不符。高转化低点击的广告,说明广告内容针对的人群和产品实际受众符合程度较高,但需要优化广告内容,吸引更多人点击。低点击率低转化的广告,可以放弃了。
象限法的优势:

(1)找到问题的共性原因
通过象限分析法,将有相同特征的事件进行归因分析,总结其中的共性原因。例如上面广告的案例中,第一象限的事件可以提炼出有效的推广渠道与推广策略,第三和第四象限可以排除一些无效的推广渠道;
(2)建立分组优化策略针对投放的象限分析法可以针对不同象限建立优化策略
例如RFM客户管理模型中按照象限将客户分为重点发展客户、重点保持客户、一般发展客户、一般保持客户等不同类型。给重点发展客户倾斜更多的资源,比如VIP服务、个性化服务、附加销售等。给潜力客户销售价值更高的产品,或一些优惠措施来吸引他们回归。
三、漏斗分析思维
这种思维方式已经比较普及了,漏斗分析分为长漏斗和短漏斗。长漏斗的特征是涉及环节较多,时间周期较长,常用的长漏斗有渠道归因模型,AARRR模型,用户生命周期模型等等;短漏斗是有明确的目的,时间短,如订单转化漏斗和注册漏斗。

一般都用于分析多业务环节和用户成交的链路分析。但是,看上去越是普适越是容易理解的模型,它的应用越得谨慎和小心。在漏斗思维当中,我们尤其要注意漏斗的长度。
漏斗从哪里开始到哪里结束?漏斗的环节不该超过5个,漏斗中各环节的百分比数值,量级不要超过100倍(漏斗第一环节100%开始,到最后一个环节的转化率数值不要低于1%)。若超过了我说的这两个数值标准,建议分为多个漏斗进行观察。
理由是什么呢?超过5个环节,往往会出现多个重点环节,那么在一个漏斗模型中分析多个重要问题容易产生混乱。数值量级差距过大,数值间波动相互关系很难被察觉,容易遗漏信息。
四、相关思维
我们观察指标,不仅要看单个指标的变化,还需要观察指标间的相互关系。有正相关关系(图中红色实线)和负相关关系(蓝色虚线)。最好能时常计算指标间的相关系数,定期观察变化。

相关思维的应用太广了,往往是被大家忽略的。常见的啤酒尿布的故事就是运用了相关性的思维,但要注意相关关系不等于因果关系,对于因果关系的探究是比较负责的问题,目前业界比较成熟的是用机器学习的方法做因果推断。这里要强调的是现在的很多企业管理层,面对的问题并不是没有数据,而是数据太多,却太少有有用的数据。相关思维的其中一个应用,就是能够帮助我们找到最重要的数据,排除掉过多杂乱数据的干扰。

如何执行呢?你可以计算能收集到的多个指标间的相互关系,挑出与其他指标相关系数都相对较高的数据指标,分析它的产生逻辑,对应的问题,若都满足标准,这个指标就能定位为核心指标。建议大家养成一个习惯,经常计算指标间的相关系数,仔细思考相关系数背后的逻辑,有的是显而易见的常识,比如订单数和购买人数,有的或许就能给你带来惊喜!另外,“没有相关关系”,这往往也会成为惊喜的来源。不要忽略数据中隐藏的信息,多去发现其中潜在的“相关性”,往往可能会给业务带来新的机会点。
五、帕累托分析
帕累托法则,源于经典的二八法则。比如在个人财富上可以说世界上20%的人掌握着80%的财富。而在数据分析中,则可以理解为20%的数据产生了80%的效果需要围绕这20%的数据进行挖掘。往往在使用二八法则的时候和排名有关系,排在前20%的才算是有效数据。二八法是抓重点分析,适用于任何行业。找到重点,发现其特征,然后可以思考如何让其余的80%向这20%转化,提高效果。
一般地,会用在产品分类上,去测量并构建ABC模型。比如某零售企业有500个SKU以及这些SKU对应的销售额,那么哪些SKU是重要的呢,这就是在业务运营中分清主次的问题。
常见的做法是将产品SKU作为维度,并将对应的销售额作为基础度量指标,将这些销售额指标从大到小排列,并计算截止当前产品SKU的销售额累计合计占总销售额的百分比。百分比在 70%(含)以内,划分为 A 类。百分比在 70~90%(含)以内,划分为 B 类。百分比在 90~100%(含)以内,划分为 C 类。以上百分比也可以根据自己的实际情况调整。
ABC分析模型,不光可以用来划分产品和销售额,还可以划分客户及客户交易额等。比如给企业贡献80%利润的客户是哪些,占比多少。假设有20%,那么在资源有限的情况下,就知道要重点维护这20%类客户。

六、逻辑树思维
一般说明逻辑树的分叉时,都会提到“分解”和“汇总”的概念。我这里把它变一变,使其更贴近数据分析,称为“下钻”和“上卷”。

常用于指标拆解的分析,——做异常波动的原因分析,确定影响指标波动的核心因子,以便做更细粒度的分析。
核心是拆解!!!先拆解指标,再拆解维度,这样可以大大的提高分析的效率!!!
为什么要进行拆解呢?因为只看GTV的话,很难判断到底是由什么因素造成的波动,可能是交易用户数,也可能是客单价,所以拆解完之后,才能更便于定位某个细节点的问题。
具体拆解逻辑:
对交易额而言,是由交易用户数*客单价决定的(有就是有多少购买的人,每个人花了多少钱,两个相乘就是交易额);
如果是交易用户数的问题,就对交易用户数进行进一步的拆解,由于交易用户数=DAU*交易转化率得来的;
活跃用户数(DAU)又受到新/老客、用户生命周期(成熟期流失?沉睡用户流失?活跃用户转变成沉睡用户?)、城市(哪个城市?哪个类型城市?)、流量来源地影响(哪个渠道有问题了?哪个引流渠道不再合作了?)
当一步步的进行拆解的时候,会发现指标分析起来会更容易找到可以在实际的业务落地的维度方面的异常波动。
例如:如果说老客没有问题,但是新客减少了,是不是相当于说明要多花一些心思去拉新?如果是新客波动趋势没有发生变化,但是老客越来越少了,是不是就说明了留存出现了问题?从而导致了老客的DAU下降了?
逻辑树的分析思维很重要,平时要多沉淀,特别容易找到问题点的拆解的方式,而且拆解的顺序很关键,也非常的重要,因为思路的起始点决定了做这件事情的效率,如果没有按照有效的方法进行拆解,那么将很难定位到真正引起相关波动的的根本原因。

七、留存/队列分析思维
随着计算机运算能力的提高,队列分析(cohort analysis)这一方式逐渐展露头脚。从经验上看,队列分析就是按一定的规则,在时间颗粒度上将观察对象切片,组成一个观察样本,然后观察这个样本的某些指标随着时间的演进而产生的变化。目前使用得最多的场景就是留存分析。

用户留存指的是新会员/用户在经过一定时间之后,仍然具有访问、登录、使用或转化等特定属性和行为,留存用户占当时新用户的比例就是留存率。留存率按照不同的周期分为三类,以登录行为认定的留存为例:
第一种 日留存,日留存又可以细分为以下几种:
(1)次日留存率:(当天新增的用户中,第2天还登录的用户数)/第一天新增总用户数
(2)第3日留存率:(第一天新增用户中,第3天还有登录的用户数)/第一天新增总用户数
(3)第7日留存率:(第一天新增用户中,第7天还有登录的用户数)/第一天新增总用户数
(4)第14日留存率:(第一天新增用户中,第14天还有登录的用户数)/第一天新增总用户数
(5)第30日留存率:(第一天新增用户中,第30天还有登录的用户数)/第一天新增总用户数
第二种 周留存,以周度为单位的留存率,指的是每个周相对于第一个周的新增用户中,仍然还有登录的用户数。
第三种 月留存,以月度为单位的留存率,指的是每个月相对于第一个周的新增用户中,仍然还有登录的用户数。留存率是针对新用户的,其结果是一个矩阵式半面报告(只有一半有数据),每个数据记录行是日期、列为对应的不同时间周期下的留存率。正常情况下,留存率会随着时间周期的推移而逐渐降低。下面以月留存为例生成的月用户留存曲线:

找到魔法数字,留存、激活、转化的转折点。
八、实验思维(AB tset)
在实际工作中,很多时候分析并没有足够的数据支持,在你面对一个新的业务场景的时候,比如手淘增加逛逛的内容栏目,如何帮助业务分析业务的策略是否有效值得推广呢?没有分析的支持和判断,容易出现不可控的风险,所以这种时候一般都会用到实验的思维,用小样本/小范围进行试点,效果好再逐步放量。
这里最常见的手段就是A/B test啦。
那么如何细化一下这个概念?一是在条件允许的情况下,决策前尽量做对比测试;二是测试时,一定要注意参照组的选择,建议任何实验中,都要留有不进行任何变化的一组样本,作为最基本的参照。现在数据获取越来越方便,在保证数据质量的前提下,希望大家多做实验,多去发现规律,可以按如下表格来做实验。

具体AB的流程:
A/Btest,是将Web或App界面或流程的两个或多个版本,在同一时间维度,分别让类似访客群组来访问,收集各群组的用户体验数据和业务数据,最后分析评估出最好版本正式采用。A/Btest的流程如下:
(1)现状分析并建立假设:分析业务数据,确定当前最关键的改进点,作出优化改进的假设,提出优化建议;比如说我们发现用户的转化率不高,我们假设是因为推广的着陆页面带来的转化率太低,下面就要想办法来进行改进了。
(2)设定目标,制定方案:设置主要目标,用来衡量各优化版本的优劣;设置辅助目标,用来评估优化版本对其他方面的影响。
(3)设计与开发:制作2个或多个优化版本的设计原型并完成技术实现。
(4)分配流量:确定每个线上测试版本的分流比例,初始阶段,优化方案的流量设置可以较小,根据情况逐渐增加流量。
(5)采集并分析数据:收集实验数据,进行有效性和效果判断:统计显著性达到95%或以上并且维持一段时间,实验可以结束;如果在95%以下,则可能需要延长测试时间;如果很长时间统计显著性不能达到95%甚至90%,则需要决定是否中止试验。
(6)最后:根据试验结果确定发布新版本、调整分流比例继续测试或者在试验效果未达成的情况下继续优化迭代方案重新开发上线试验。流程图如下:

真正实现数据驱动业务决策,No Data, No BB,看数据表现决定决策是否有效可推广,这种实验思维可以快速帮助业务把脑暴的策略落地下去,并且随着实验次数的增加,逐步沉淀有效策略,而且积累踩坑的经验(很宝贵,避免资源浪费也是一种增长)。
九、聚类分析
聚类分析属于探索性的数据分析方法。我们很多时候逛电商网站都会收到一些推销活动的通知,但是我们之前也没关注过那个商品,这些电商网站是为什么决定给我们推销这个商品的呢?这是因为电商网站,可以根据用户的年龄、性别、地址以及历史数据等等信息,将其分为,比如“年轻白领”、“一家三口”、“家有一老”、”初得子女“等等类型,然后你属于其中的某一类,电商网站根据这类用户的特征向其发起不同的优惠活动。那在利用用户的这些数据将用户分为不同的类别时,就会用到聚类分析。
通常,我们利用聚类分析将看似无序的对象进行分组、归类,以达到更好地理解研究对象的目的。聚类结果要求组内对象相似性较高,组间对象相似性较低。在用户研究中,很多问题可以借助聚类分析来解决,比如,网站的信息分类问题、网页的点击行为关联性问题以及用户分类问题等等。其中,用户分类是最常见的情况。
常见的聚类方法有不少,比如K均值(K-Means),谱聚类(Spectral Clustering),层次聚类(Hierarchical Clustering)。以最为常见的K-means为例,如下图:

可以看到,数据可以被分到红蓝绿三个不同的簇(cluster)中,每个簇应有其特有的性质。显然,聚类分析是一种无监督学习,是在缺乏标签的前提下的一种分类模型。当我们对数据进行聚类后并得到簇后,一般会单独对每个簇进行深入分析,从而得到更加细致的结果。
十、指数化思维
指数化思维是今天分享的10个思维当中最重要的。许多管理者面临的问题是“数据太多,可用的太少”,这就需要“降维”了,即要把多个指标压缩为单个指标。指数化思维就是将衡量一个问题的多个因素分别量化后,组合成一个综合指数(降维),来持续追踪的方式。常见的应用:门店健康评分、居民幸福指数、用户调研得分等。

指数化的好处非常明显:一是减少了指标,使得管理者精力更为集中;二是指数化的指标往往都提高了数据的可靠程度;三是指数能长期使用且便于理解。
指数的设计是门大学问,这里简单提三个关键点:一是要遵循独立和穷尽的原则;二是要注意各指标的单位,尽量做标准化来消除单位的影响;三是权重和需要等于1。
PS:独立穷尽原则,即你所定位的问题,在搜集衡量该问题的多个指标时,各个指标间尽量相互独立,同时能衡量该问题的指标尽量穷尽(收集全)。例如当运营人员考虑是否需要将自己的内容分发到其他平台时,他可以采用指数化思维来整体评分。
参考文章:
1、一篇文章透彻解读聚类分析(附数据和R代码)
https://zhuanlan.zhihu.com/p/37856153
2、《精益数据分析》
3、7种常用数据分析方法 
https://zhuanlan.zhihu.com/p/446166743

如果您喜欢本期《驱动力》就点个赞吧❤

电话:1580-136-5057
邮箱:kai.zhao@yeepay.com
地址:北京市朝阳区朝外大街甲6号万通中心D座25层

Copyright © 2024 陕西妙网网络科技有限责任公司 All Rights Reserved

增值电信业务经营许可证:陕B2-20210327 | 陕ICP备13005001号 陕公网安备 61102302611033号