1. 程式人生 > >大資料學習,如何選擇合適的開發語言

大資料學習,如何選擇合適的開發語言

          大資料快速發展的今天,很多人選擇加入大資料學習的陣營,課時從哪裡入手,如何選擇合適的開發語言來做與大資料相關的事,這個話題應該困擾了不少大資料學習的新人,在面對五花八門的「開發語言」和「分析軟體」時,自己該如何選擇?

          先開門見山的給出結論:在職場中,學習任何一門技術,優先考慮工作需求本身,其次是職業發展所需,最後才是興趣和好奇驅動。本末顛倒的話,不僅學習效率低下,而且還可能竹籃打水一場空,浪費時間成本。

       就拿我自己說事,讀書期間在做「數學建模」時,因為不是計算機\軟體相關的專業,唯一接觸過的C語言(The C Programming Language)也只懂皮毛,所以每一次比賽為了去「收集資料、處理資料、分析資料和構建模型」,只能藉助人力、Excel、Matlab和SPSS去操作。

         當然,這些工具也足夠去滿足比賽的技能要求了,而且比賽的核心也不在於非要用更高階的程式語言,相反它們只是解決問題的一種形式罷了,關鍵在於要快速上手,要能解決需求痛點。

        所以,在這樣的一個情況之下,我並沒有犧牲大量的學習成本,重新去提高C語言的程式設計能力,甚至是從0到1去學習Java語言。

       臨近秋招前,我開始去了解工業上常用的資料開發軟體和開發語言,簡直是琳琅滿目,有Python、R、Eviews、SAS、SPSS、Tableau、水晶易表,一大堆。還有Java、C、C++、Hadoop各種詞彙都浮現於眼前。那時候就有點不知所措了,完全不知道該學什麼,所以最後都選擇接觸了一遍,但結果真的是白費努力,浪費時間。

       後面實習入職了一家網際網路電商平臺,部署了6~7個節點的分散式叢集去做大資料計算,當時還以為自己終於能玩「大資料」了,可沒想到最後用的最多的卻是SQL\HQL、Excel、PPT、SPSS。而且它們已經足夠解決日常的工作需求了。

        所以說,學習任何一門技術,最好能在實際工作中有所使用,畢竟你的工作時間限制了你的學習精力,否則你很難去達到熟練的程度,更別提深入專研。

       但不管如何,從行業的發展趨勢上,很多新技能是必須要學習和掌握的,如果工作中真的沒有機會去接觸和使用的話,那就只能換一個更合適的平臺。

        當初我就是這樣去考慮的,畢竟「大資料」的熱潮已經全面鋪開了,再不抓緊就只有看夕陽西下了。

      所以,在後面幾年的工作經歷中,我都是在接觸Hadoop、Spark相關的開源軟體,從0到1的去學過Python、Java、Hive、MapReduce(基於Java實現)、Shell 、Scala、Spark Streaming這些技能。

       但是不管如何,這一切的新知識學習都是為了去適應工作環境,為了更快捷和更高效去解決工作需求的問題。同時因為工作中常常接觸到,所以才能熟練起來,也才有機會去深入思考更底層的問題。

      總而言之,我認為任何技術都是為了更好的服務於業務,業務是驅動技術發展的關鍵因素。

       當然,從行業趨勢上,我也打算在後期引入深度學習的計算框架,也會去考慮高併發的計算效率優化等等,但是迴歸本質都是為了提升業務模型的效果,解決更多業務需求痛點。

       因此,要想去學習新技能,引入新技術,大前提是現有的業務需求已經得到有所解決,而且能夠得到業務的支援和信任,這樣在後期技術的推進上才能有時間去摸索,有機會去嘗試。否則,你同樣只能學個皮毛。

       好了,講述完了我自己,最後來談談大多數朋友的局面,這也是大家所關心的。

① 首先,作為資料小白,應該先學習什麼資料技能?

毫無疑問,這時候你需要先把「入門」作為首要目標,不要過於浮躁,優先考慮去學習SQL、Excel、SPSS、PPT,這樣你才有機會進入一個平臺,能夠接觸資料,開始資料分析,嘗試撰寫報告。利用好這個跳板,你才能向「成長」進階。

② 其次,作為業務人員(含分析師、產品經理),應該學習什麼資料技能?

這時候你需要去進一步提高自己的專業技能,這樣才有機會去更瞭解資料,訓練資料感,寫出更有深度的分析報告,甚至是以後的轉崗。所以你需要一把利劍,我會優先推薦Python,節省以後學習其他語言(Java、Scala)的時間成本。

③ 另外,作為資料開發,應該先學習什麼資料技能?

我的建議是,你先去做好一個Java工程師,掌握一定的專業技能,再來考慮從事大資料開發呢。

當然,這樣的時間成本或許挺高,而且現階段開源這套技術框架基本穩定和易上手了。

④ 最後,作為資料探勘,應該先學習什麼資料技能?

資料探勘這個崗位,嚴格上區別於演算法工程師,前者是一個偏業務、重資料、看實踐的崗位,通俗易懂就是在探索海量資料中的經濟價值。

所以,大部分資料探勘工程師,首當其衝的痛點是需要思考一個問題:如何將以往熟練的這套技術和流程與「大資料」和「業務」相結合。

別想著利用Python\R去直連生產環境的資料做分析,很多平臺都有堡壘機,也不允許本地環境與生產環境的直接互動。即使你load到了線上資料,但是隻憑藉DataFrame這樣的操作,我認為很難去分析出什麼資料價值,更別提能不能單機運算的效率。

所以,做資料探勘工作時,除了思考模型的效果提升,也要考慮清楚自己的模型後期將如何去與線上業務結合,以及它的計算效率和自動化工作。

因此,我建議優先去考慮一下分散式叢集的計算方式,如果平臺缺乏團隊和資金的話,要麼考慮單獨增加本機的計算資源和優化模型的計算效率,要麼考慮換一個工作環境。

最後,對於大部分資料探勘工程師來說,一定要加強SQL、Excel的使用,這是最基本,也是最重要的。

所講的這些,是為了讓大家正確的做資料。學習這些技能,是為了讓大家輕鬆的做資料。歸根到底,都是為了提高核心競爭力,花最短的時間,輸出最大的價值,讓自己更值錢!