目?錄
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份鐵板豆腐加狼牙土豆套餐,差不多一分鐘就得賣一份,這邊做邊賣三頭六臂都不夠用。
擺攤屢屢成為人們熱議的話題,畢竟作為一個門檻極低的生意,已經成為很多年輕人,辭職后的首選,甚至是辭職的理由。
那么我們不妨測算一下,想要實現月入過萬,到底應該選擇什么樣的生意?又需要每天賣多少份?
先說明一下我們的測算原則:
- 不考慮攤位費、營銷費用等靈活開支;
- 設備成本選取二手或拼多多售價中最低值;
- 售價取常見價格中位數;
- 預設首月毛利潤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歲到100歲之間的年齡,s_age的最大枚舉值才是100,如果轉化成MapReduce來解釋的話,在Map階段,每個Map會對s_age去重。由于s_age枚舉值有限,因而每個Map得到的s_age也有限,最終得到reduce的數據量也就是map數量*s_age枚舉值的個數。
- distinct的命令會在內存中構建一個hashtable,查找去重的時間復雜度是O(1);group by在不同版本間變動比較大,有的版本會用構建hashtable的形式去重,有的版本會通過排序的方式, 排序最優時間復雜度無法到O(1)。另外,第一種方式(group by)去重會轉化為兩個任務,會消耗更多的磁盤網絡I/O資源。
- 最新的Hive 3.0中新增了 count(distinct ) 優化,通過配置 hive.optimize.countdistinct,即使真的出現數據傾斜也可以自動優化,自動改變SQL執行的邏輯。
- 第二種方式(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中),最后完成最終的聚合操作。
但是這個處理方案對于我們來說是個黑盒,無法把控。
那么在日常需求的情況下如何處理這種數據傾斜的情況呢:
- sample采樣,獲取哪些集中的key;
- 將集中的key按照一定規則添加隨機數;
- 進行join,由于打散了,所以數據傾斜避免了;
- 在處理結果中對之前的添加的隨機數進行切分,變成原始的數據。
例:如發現有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='2019-08-10'??
and b.ds='2019-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) 業務規則
- (2) 統計分析,指標項表現形似的歸為一組
- (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代碼)
//zhuanlan.zhihu.com/p/37856153?
2、《精益數據分析》
3、7種常用數據分析方法?
//zhuanlan.zhihu.com/p/446166743
如果您喜歡本期《驅動力》就點個贊吧?
電話:1580-136-5057
郵箱:kai.zhao@yeepay.com
地址:北京市朝陽區朝外大街甲6號萬通中心D座25層