作者TonyQ (心存善念盡力而為)
看板Soft_Job
標題Fw: [問題] 想走Big Data的選系困擾
時間Tue Feb 10 06:49:50 2015
※ [本文轉錄自 studyabroad 看板 #1KsDZyDQ ]
作者: dryman (dryman) 看板: studyabroad
標題: Re: [問題] 想走Big Data的選系困擾
時間: Mon Feb 9 23:57:46 2015
我現在也是在big data業界工作(OpenX)處理的是廣告實時競價
去除重複資料後,一分鐘的資料量也有25GB
先講兩個結論:
1. CS 是最接近的科系,但也有很多東西是CS沒有教,你要自己學的
這其實不意外。例如,怎麼把程式寫到production level
在業界明明就是非常需要的能力,但沒什麼研究價值
2. Process data in large scale != data science
* * *
很多人以為big data就是要做大型數據分析
不過如果你沒有一個能靠數據吃飯的business model,你連資料都養不起
OpenX的資料量還不算是非常大的,但也是要700台來裝這些數據
資料甚至還不能留太久
我們的主要業務不是在分析數據,而是將數據處理成報表,才能跟客戶收錢
這種資料工程師要做的事情可以簡化成三件事:
1. 去除無效或重複資料
2. 將相關的資料join
3. join好的資料非常大,類似傳統資料庫的hyper cube
從這樣的資料再去切出各種角度的報表
英文比較好表達這個:aggregation
把這三件事做到好,才是一家公司有辦法養大數據的基礎
很不幸的,沒有學校會想要教你這些,因為這實在是沒有學術價值啊
* * *
資料工程要做的三件事雖然目標簡單,但要做到large scale一點也不直觀
雖然現在hadoop ecosystem上層工具很多,但我建議還是要能做到map-reduce API的程度
這裡面最困難的還是去除無效資料
如何篩選相關資料,然後送進同一台機器兩兩比對是否重複或無效
這種邏輯不直接寫到Map-Reduce API我還真無法想像該怎麼寫
另外跟金錢相關的資料,常常需要在currency間轉換
currency的轉換要留到最後一步做,太早變成浮點數,數據會在數次aggregation後失真
這種我們需要客製的資料結構來存,用上層工具(hive/pig)來做也是相當困難
這些東西該怎麼學?我是自己學的
買一本hadoop definitive guide,全本讀完
書裡面很多東西沒涵蓋到,就把API先瀏覽過一遍,才會發現很多有用的小工具
到最後就是在source code裡面挖東西了
我在寫自己的input/output format時,就是從它的source code裡面找靈感
學習過程也不是學完再做東西,都是一邊學一邊做
可以先從最簡單的目標開始寫:
1. 如何寫一個select count(1) from... group by xxx
進階一點select sum, avg, ... from ... group by xxx
2. 如何寫one-to-many join, many-to-many join
3. 如何寫「去除一分鐘內的重複資料」的map-reduce job
* * *
以上是比較基礎的資料工程師要做的工作
更進階的會需要更多深入的資料結構及演算法
題目也會變得更靈活
例如,比起sort全部的資料,只找最高的一百個
用map-reduce加上自訂的資料結構效能可以比原本快非常多倍
或是如果你只在乎一個query最後會產生多少行,而且只在乎大略的數字
那你可以使用hyperloglog的演算法來做
又或是你如果想預先知道一個query會不會data skew
可以使用count min sketch
我自己的工作幾乎沒有資料分析
但需要很多技巧來將資料處理的演算法變得scalable
這也是big data工作的一種型態,我個人覺得應該是比資料分析還缺人啦
至少就我們公司來說,有太多PhD來應徵data science,而合格的data engineer
幾乎找不到...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 108.205.154.164
※ 文章網址: https://www.ptt.cc/bbs/studyabroad/M.1423497468.A.35A.html
推 leo80042: 頭推 02/10 00:00
推 shenerica: 原po專業 02/10 00:13
推 Tyrannus: thanks for sharing :) 02/10 00:13
推 BigShotBob: 這篇專業 現在這種處理方法幾乎都要另外開一門課 02/10 00:15
→ BigShotBob: 可參考CMU 10605 非常實用 有影片可以看 02/10 00:17
推 branburg: 專業推 的確CS很多技術也很多要需自學! 02/10 01:22
→ branburg: 資料分析也許需從Orthogonality層面著手~ 02/10 01:36
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: TonyQ (61.231.167.14), 02/10/2015 06:49:50
→ TonyQ: 經原作者同意轉載。 02/10 06:50
推 demo1945: 專業 02/10 07:56
推 jammy50605: 推 02/10 08:20
推 kofi0916: 謝分享 02/10 08:22
推 y2468101216: 推 但看不太懂 02/10 09:01
推 gn01838335: 學到一些知識 02/10 09:02
推 kenshin528: 分析 演算法 跟程式化真的是不同領域的訓練 02/10 09:31
推 KASUGAOSAKA: 中肯 02/10 09:36
推 gmoz: 好文 02/10 10:27
推 xtxml: 推,雖然不是這個領域的,但受益良多,感謝:) 02/10 10:34
推 guanting886: 推一個 02/10 11:04
推 dryman: 希望能用這篇文章拋磚引玉 :) 02/10 11:15
推 Fracon: 謝謝分享! 02/10 11:25
推 vn509942: 感謝分享 02/10 12:06
推 kspacey: 推 02/10 12:25
推 nfsong: 推 02/10 12:46
推 cpper: 用Impala下SQL Query一次解決 select xx from yy group oo 02/10 12:54
→ cpper: 所以沒想過寫map reduce code, 總覺得麻煩 02/10 12:55
推 a7904120: 推 雖然看不太懂 02/10 13:02
推 drajan: impala只是ad hoc query而已 沒有用到map reduce吧 02/10 13:40
推 qrtt1: Big Data Now,每年都出一本。可以看看概念,有免費或是 02/10 13:48
推 dryman: 我家資料就算已經aggregate過,還是塞不進impala...XD 02/10 14:53
推 kenshin528: 歡迎使用spark sql XD 02/10 15:51
推 popcorny: 推 02/10 15:59
推 gmoz: impala跟MR 的用途還是有差啦 要做一些複雜的應用impala不夠 02/10 16:21
推 easybaby: 02/10 22:53
推 AmosYang: 推分享 02/11 20:49
推 heerowei0802: 推分享 02/12 10:58
→ MOONY135: 跟我目前做的很相似 還留在產報表 還沒進入分析 02/12 22:58
→ viper9709: 推分享 02/12 23:41
推 roger00: 推分享 02/15 20:02