想轉行做大數據技術相關的工作,需要學習語言還是學什麼?


前提說一下,大數據是個很籠統的和模糊的概念。凡是動不動說大數據的,都是半吊子

「大數據「對於我們這些從業者來說,是不太喜歡說的一個詞。所謂內行看門道,外行看熱鬧,」大數據「這兩年風風火火,大家都爭先恐後的討論著,但說到如何掌握或者運用,很多人是不知所措的。

私以為,大數據的核心在三個地方:數學+計算機知識+業務

先說說題主說到的編程,我在這裡將它納入計算機知識這一部分,因為編程對於我們來說只是大數據的冰山一角。這兩年大數據的發展,絕對不是因為編程語言的進步,很大一部分是由於計算機工具的進步或者硬體的提升。
尤其是現在計算機硬體價格的下跌,以及大數據處理工具的發展,如hadoop,spark等,帶來了數據處理能力的飛速提升,才導致了現在大數據的越來越火。

至於我們說的數據挖掘知識和編程語言,這些都是很早以前就已經存在的知識,這幾年也沒有得到很令人驚喜的新進展(我說的是知識本身,不是指應用)。

總之:
大數據之所以得到人們關注,最重要的是數據處理工具的進步以及數據量的累積(尤其是互聯網)

那麼是不是說明
掌握編程或者計算機工具就是邁入大數據的關鍵路徑呢?

答案:顯然不是,數學才是真正的核心知識。

沒錯,數學是在數據挖掘領域非常重要的甚至是核心的部分,編程只是工具,真的只是工具。
編程語言有好幾十種嗎,但是數據挖掘理論知識就那兒點。
你用任何一門語言去實現你的數學思想便可以達到數據挖掘的目標。
學術研究甚至可以拋棄編程,完全只研究演算法(注意:這樣的話會容易造成紙上談兵)。

工業上應用必須講究用編程去實現演算法並加以調優。
因此在學習的時候要擺正位置:數學很重要,編程知識語言。 很多同學上來就開始學編程,學了一年半載我估計你也不知道什麼是數據挖掘。

因此,簡單的小結一下:

先去學習數學知識,這裡涉及到:

統計學

概率論

線性代數

數據挖掘

機器學習

然後學習一門可用的語言,容易上手的語言(這個對新手很重要,如果你去學習c++或者java,我保證你會死的很慘):

這裡當然要推薦R和PYTHON了,不服來辯

然後去找找帶案列和代碼的書籍讀一讀,了解一下具體的演算法是怎麼在現實中應用的

最後提高的部分就太多了,linux,資料庫,分散式等。這個你需要自己去探索,補充自己所需要的就可以!

最後:不要將「大數據」經常掛在嘴邊~~

感興趣的同學,可以關注一下我們的公眾號,學數據分析的:

soton2014sky


本人目前是一名大數據工程師,項目數據50T,日均數據增長20G左右。

個人是從Java後端開發,經過3個月的業餘自學成功轉型大數據工程師。

背景介紹完畢,開始正式一本正經回答問題:

本回答目錄:

一.大數據方向工作介紹

二.大數據工程師的技能要求

三.大數據學習路徑

四.學習資源推薦(書籍、博客、網站)

一.大數據方向工作介紹

大數據方向的工作目前分為三個主要方向:

01.大數據工程師

02.數據分析師

03.大數據科學家

04.其他(數據挖掘本質算是機器學習,不過和數據相關,也可以理解為大數據的一個方向吧)

二.大數據工程師的技能要求

附上二份比較權威的大數據工程師技能圖(圖侵刪)

總結如下:

必須技能10條:

01.Java高級(虛擬機、並發)

02.Linux 基本操作

03.Hadoop(此處為俠義概念單指HDFS+MapReduce+Yarn )

04.HBase(JavaAPI操作+Phoenix )

05.Hive(Hql基本操作和原理理解)

06.Kafka

07.Storm

08.Scala需要

09.Python

10.Spark (Core+sparksql+Spark streaming )

11.一些小工具(Sqoop等)

高階技能6條:

11.機器學習演算法以及mahout庫加MLlib

12.R語言

13.Lambda 架構

14.Kappa架構

15.Kylin

16.Aluxio

三.學習路徑

由於本人是從Java開發通過大概3個月的自學轉到大數據開發的。所以我主要分享一下自己的學習路勁。

第一階段:

01.Linux學習(跟鳥哥學就ok了)

02.Java 高級學習(《深入理解Java虛擬機》、《Java高並發實戰》)

第二階段:

03.Hadoop (董西成的書)

04.HBase(《HBase權威指南》)

05.Hive(《Hive開發指南》)

06.Scala(《快學Scala》)

07.Spark (《Spark 快速大數據分析》)

08.Python (跟著廖雪峰的博客學習就ok了)

第三階段:

對應技能需求,到網上多搜集一些資料就ok了,我把最重要的事情(要學什麼告訴你了),

剩下的就是你去搜集對應的資料學習就ok了

當然如果你覺得自己看書效率太慢,你可以網上搜集一些課程,跟著課程走也OK 。這個完全根據自己情況決定。如果看書效率不高就很網課,相反的話就自己看書。

四.學習資源推薦:

01.Apache 官網

02.Stackoverflow

04.github

03.Cloudra官網

04.Databrick官網

05.過往的記憶(技術博客)

06.CSDN,51CTO

07.至於書籍噹噹一搜會有很多,其實內容都差不多。

最後但卻很重要一點:要多關注技術動向,持續學習。


既然聊到想找大數據技術相關的工作,而且樓主強調的是大數據「技術」,簡單分享下自己BAT招人和開發經驗供參考下吧。

常見的數據技術崗位分為:演算法挖掘、數據倉庫、架構師、ETL研發和分析技術等相關的崗位。

----------------------------------------------------------------------------------------------------------------------------------------

演算法挖掘:

數據倉庫研發:

數據架構:

----------------------------------------------------------------------------------------------------------------------------------------

而主要的輸出方嚮應用有:數據底層搭建、推薦平台搭建、演算法模型等應用。

樓主可以自行參考下。

就醬紫。有時間來補充。


真想學的話,看看我們這個微信號,許多你想要的答案都能夠接近!再說了,沒必要被所謂的大神們唬住,技術也有循序漸進的過程,我們單位招的幾個實習生,沒多久就很快上手了,只要有一定的編程知識和學習的熱情,大數據技術的工作沒那麼難的。


有個現象:

當大部分都知道什麼東西很火的時候,殊不知這個行業已經水深火熱了。

你確定不是從眾心理,而是自己喜歡這個方向,這個方向是不錯,但不是每個人都適合,緊缺的是有經驗的人,不是缺小白來培養。

個人不太建議看到網路炒哪個火就往哪個方向跑,而是可以去關注,去了解,如果不錯,嘗試做點連接起來的事情,之前說過一個思維,數據分析或數據挖掘都是要具有「數據+」的思路,就是把數據的相關技能當做工具,去分析理解自己所做的業務(包括技術開發),當然可以反方向,做業務或其他開發的人員,可以去熟悉數據的思維,了解一些技能和方法,來梳理自己所做的事情,這也是很多公司推行全員數據理念的思想,而是其他方向做了幾年的人,看到數據方向火爆,就想搶數據人的飯碗(當然數據人不怕搶哈),如果你真的合適且喜歡,祝賀找到自己喜歡的工作,但不是的話,謹慎選擇。

有工作經驗了,應該知道,很多工作更注重思維,而不是技能本身(很多人都會),做數據也一樣重要的是數據思維,分享一個之前回答的,希望有幫助

http://www.zhihu.com/question/26621034/answer/33602224?from=singlemessageisappinstalled=1


Hadoop入門及生態系統介紹

介紹Hadoop的發展,系統架構,相關版本和如何學習Hadoop。

新一代虛擬技術Docker

新一代的虛擬技術Docker的基本情況介紹和使用,並利用Docker快速的構建Hadoop的學習環境

1. 新一代虛擬技術-容器虛擬化

2. 在Windows上安裝使用Docker

Hadoop學習

1. Hadoop介紹

2. Hadoop系統搭建與部屬

a) Hadoop的三種安裝方式

b) Hadoop的Shell命令

3. Hadoop HDFS組件分析

a) HDFS架構,SNN及副本放置策略

b) HDFS API

4. Hadoop MapReduce工作原理與架構

a) MapReduce API及工作流程

b) MapReduce 錯誤處理,作業調度

c) MapReduce 重要組件:Combiner

d) MapReduce 重要組件:Partitioner

e) MapReduce 重要組件:RecordReader

5. Hadoop MapReduce 編程

a) MapReduce 計數器

b) MapReduce Join

c) MapReduce Sort

HBase學習

基於Hadoop的關係型資料庫HBase的學習,學習目標:了解HBase的應用場景,學習如何使用HBase

1. Hbase介紹

2. Pig,HBase,Hive三者的關係比較

3. HBase系統搭建與部屬

4. HBase的Shell操作

5. HBase的客戶端操作

Hive學習

基於Hadoop的數據倉庫和SQL查詢引擎Hive 的學習,學習目標:了解Hive的應用場景,學習如何使用Hive,HQL語句,學習如何利用Hive來做數據分析

1. Hive綜述

2. Hive系統搭建與部屬。

3. Hive的表操作

4. Hive的數據載入與操作

5. Hive的查詢語句HQL

6. Hive的窗口函數,分析函數和UDTF操作

7. Hive自定義函數

8. Hive HQL的優化

基於Hadoop的開發實戰

1. 利用SQOOP來做簡單的ETL抽取

2. 日誌分析系統

3. 推薦系統(暫定)

以上都是要學習的,Hadoop要學習的太多啊


首先,大數據是個好東西。

然後,問個3個問題。

多少數據量,你覺得是大?

大數據工具比如hadoop能解決什麼樣的問題?對企業有什麼利弊?

大數據工具hadoop能做的事情,為什麼傳統的企業資料庫比如sql,oracle就不能做?

弄大數據以前,先思考這3個問題。不要人云亦云。

就像當年的雲計算,外行人吵得好熱好熱,內行人都在呵呵。技術層面來說,分散式解決方案升級版?


大家不要裝逼了


學習語言並沒有什麼卵用,有點編程基礎的,上來就什麼hadoop,spark,然後為了框架去學java和scala之類之類,用個兩個月的時間寫點小應用應該沒問題。。。然並卵,這是捨本逐末的行為。

真想要好好學好大數據,離散數學,統計學,演算法之類的得紮實,語言什麼的,只要你編程基礎不太差,新用一門語言有個半個月的時間上手應該沒太大問題(上手,不是精通)。

不說了,本人現在從頭來過,看數學去了


看到有人在高票答案下評論:不會java怎麼玩hadoop?

看到還有人回答了一堆hadoop系的技術工具。

這是將「大數據技術」與「分散式數據處理」劃等號,但這樣劃等號很業餘的。

大數據技術本身就是一個籠統的概念,理解大致分為兩種:

A.分散式數據處理技術(關鍵詞如:Hadoop, Hive, Spark, MPI)

B.基於大量數據的機器學習技術(關鍵詞如:邏輯回歸、GBDT、深度學習、在線學習)

為什麼很多人只知道第一種理解呢?

因為這種技術使用量大、門檻低,為什麼這麼說呢?

幾乎每家互聯網公司都有對A的需求,最常見的工作是統計網站PV/UV(或者是按月/按天/按區域/按頁面統計網站PV/UV),做做報表,這是一種幾乎必須卻又技術含量很低的工作,即使在一線城市這樣的工作薪資可以低至5K,甚至可以比一般的程序員還低。當然也有薪資高的,工作內容稍稍複雜一些,前幾年大數據概念剛炒起來的時候很高,現在也就比一般程序員高一點點。

很少互聯網公司有對B的需求,或是有需求但不知道,或是知道有需求招不到合適的人,即使在BAT這樣上萬人的大公司中,從事B工作的也不超過0.5%,也就是100多人,常見的工作內容:開發一些系統(搜索引擎、推薦引擎、雲端殺毒引擎、用戶畫像、開發反刷單作弊系統)中的特定機器學習演算法,是不是聽不懂?那就對了,因為這種技術門檻高。

正因為「大數據技術」是一個籠統的概念,專業公司通常不會將職位名稱寫作「大數據工程師」,如果題主遇到招聘「大數據工程師」的公司,那一般是不知道B技術的工程師寫的職位名

如果題主想學習的是B技術,參考 @卡牌大師 的回答,不一定要會java,學java容易浪費太多時間,忘記了初心,最後掉進hadoop的坑裡出不來,而拿hadoop做迭代式機器學習演算法的,通常是因為計算機基礎知識沒學好,當你真正掌握了機器學習,需要用到java/c++提高運行效率時,再來有目的的學習編程這些語言不遲


學好數學:高等數學,線性代數,概率論,統計學,這幾樣至少要學好。

學好Python,R,最好精通。

hadoop生態系統中的hbase,hive,mahout。

常用演算法。

大數據的理論知識。

數據挖掘,機器學習的理論知識。

學會爬數據。

最後加上大量的實踐。


作為一個從普通沒接觸過大數據就會oracle寫sql的Java開發轉型過來的人,目前工作有一半和大數據相關,我講一下我的想法。第一次回復問題,心裡有點小忐忑。

1 首先你需要了解一下基本的背景知識,諸如數據之巔、數學之美什麼的弄一本,了解一下大概的方向,也能給自己打打氣。

2 接下來可能比較枯燥,你可能需要找一些技術類的書看一下。根據以後的方向,也可以分諸如hadoop、hive一類的大數據開發的書,也可以是介紹各種挖掘演算法的書(演算法導論、統計學習方法等)。這兩種書看看其實是相輔相成的,但是根據方向最好有側重點學習。另外如果要學演算法,請務必學好高數、統計學、線性代數一類的書(多麼痛的領悟,都還老師了)

3 最重要的,要練,光看書不練,看了後面忘記前面。


先別說學什麼語言,搞大數據先把數學學一遍吧。


先要學會信息檢索能力


我寫了一下我做大數據分析師一年的一些想法沒有大數據背景能轉行做大數據的工作嗎?


真想學的話找個大公司進去干 這玩意沒有一個大平台做不起來


hadoop(hdfs,mapreduce),hive,hbase,zookeeper,pig,sqoop,storm,spark(SQL, Streaming,MLlib,graphx) 。 基本上這些了,試試看吧。


R語言

概率統計

python

spss

modeler

echarts

javascript

(jquery)

json

資料庫 mysql 或者postgres

另外還需要熟練使用excel相關函數 會讓你輕鬆很多

按照這樣的路徑去學

加油!


看你是想往技術層面發展還是往業務方面發展,如果是技術的話,演算法還有計算機語言都是必須的,而且需要鑽的很深。如果是業務的話,那些只是工具,最重要的是自己對業務的解讀能力


大數據不僅僅是數據量大,更重要的是雜。這就需要有綜合素質(技術+思維+知識)

技術:基礎設施(計算機編程)+應用分析類(數據分析挖掘+統計方法)

思維:系統思維,與業務關聯是大數據的核心。

知識:業務知識,也就是行業經驗吧

其實,以上只要有一個點是牛逼的就可以。因為我們是個體,工作是一個團體。


推薦閱讀:

分散式資料庫下子查詢和join等複雜sql如何實現?
如何評價小米團隊擁有4個hbase committer?
什麼是流式數據訪問?
hadoop的源代碼寫的怎麼樣?
HDFS上小數據如何能負載均衡?

TAG:數據挖掘 | 數據分析 | Hadoop | 大數據 |