搞大數(shù)據(jù),Java 工程師需要掌握哪些知識(shí)?
題目是一名叫“截然不同”的同學(xué)私信我的一個(gè)問題,原話是,“搞大數(shù)據(jù),java 需要掌握哪些技術(shù)點(diǎn)?”,我稍微調(diào)整了一下。必須得承認(rèn)一點(diǎn),我本人沒有搞過大數(shù)據(jù),所在這方面的經(jīng)驗(yàn)為零。
但同學(xué)既然問了,咱就不能假裝不知道啊,雖然真的是不知道。但要變強(qiáng),就必須無所畏懼,迎難而上,對(duì)吧?
幸好我身邊有一些朋友是做大數(shù)據(jù)的,我可以向他們請(qǐng)教,了解清楚后,我現(xiàn)在就把他們給我的建議整理一下發(fā)出來,希望給有需求的同學(xué)們一點(diǎn)幫助。
01、大數(shù)據(jù)的就業(yè)方向有哪些?
現(xiàn)實(shí)點(diǎn),我們掌握任何技能都是為了就業(yè),為了能夠找份工作糊口;立志不打工的同學(xué)們請(qǐng)繞行哈。
那大數(shù)據(jù)的就業(yè)方向都有哪些呢?
- 大數(shù)據(jù)工程師
- 大數(shù)據(jù)科學(xué)家
- 數(shù)據(jù)分析師
那針對(duì)這些不同的就業(yè)方向,都需要哪些技能呢?我們來一一的分析下。
02、大數(shù)據(jù)工程師的技能要求
大數(shù)據(jù)工程師的門檻相對(duì)其他兩個(gè)較低一些,所以同學(xué)們可以重點(diǎn)關(guān)注一下這個(gè)方向。
先說一些必備的技能吧。
- 對(duì) Java 虛擬機(jī)有著深入的研究,推薦書籍,周志明的《深入理解 Java 虛擬機(jī)》。
- 對(duì) Java 并發(fā)掌握得很透徹,推薦書籍,《Java 并發(fā)編程實(shí)戰(zhàn)》。
- 掌握 Hadoop。Hadoop 是一款支持?jǐn)?shù)據(jù)密集型分布式應(yīng)用程序并以 Apache 2.0 許可協(xié)議發(fā)布的開源軟件框架,可以使應(yīng)用程序與成千上萬的獨(dú)立計(jì)算的電腦和 PB 級(jí)的數(shù)據(jù)連接起來,整個(gè) Hadoop “平臺(tái)”還包括 MapReduce、Hadoop 分布式文件系統(tǒng)(HDFS)。
- 掌握 HBase。HBase 是一個(gè)開源的非關(guān)系型分布式數(shù)據(jù)庫,是 Hadoop 項(xiàng)目的一部分,運(yùn)行于 HDFS 文件系統(tǒng)之上,對(duì)稀疏文件提供極高的容錯(cuò)率。
- 掌握 Hive。Hive 是一個(gè)建立在 Hadoop 架構(gòu)之上的數(shù)據(jù)倉庫,能夠提供數(shù)據(jù)的精煉,查詢和分析。
- 掌握 Kafka。Kafka 的目標(biāo)是為處理實(shí)時(shí)數(shù)據(jù)提供一個(gè)統(tǒng)一、高吞吐、低延遲的平臺(tái)。
- 掌握 Storm。Storm 是一個(gè)分布式計(jì)算框架,使用用戶創(chuàng)建的“管”和“螺栓”來定義信息源和操作,允許批量、分布式處理流式數(shù)據(jù)。
- 了解 Scala。Scala 是一門多范式的編程語言,設(shè)計(jì)初衷是要集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性??梢院?Java 兼容,運(yùn)行在 Java 虛擬機(jī)上。
- 掌握 Spark。Spark 是一個(gè)開源集群運(yùn)算框架,相對(duì)于 Hadoop 的 MapReduce 會(huì)在運(yùn)行完工作后將中介數(shù)據(jù)存放到磁盤中,Spark 使用了存儲(chǔ)器內(nèi)運(yùn)算技術(shù),能在數(shù)據(jù)尚未寫入硬盤時(shí)即在存儲(chǔ)器內(nèi)分析運(yùn)算。
- 會(huì)用 Linux。推薦書籍,鳥哥的《Linux 私房菜》。
再來說一些高階的技能吧。
- 會(huì)用 Python。
- 會(huì)用 R 語言。
- 精通算法和數(shù)據(jù)結(jié)構(gòu)。
03、大數(shù)據(jù)科學(xué)家的技能要求
“科學(xué)家”,這個(gè) title 聽起來就很牛逼,不會(huì)出乎同學(xué)們的意料,我小時(shí)候的夢(mèng)想之一除了成為一名作家之外,就是成為一名“科學(xué)家”。
那大數(shù)據(jù)科學(xué)家,要求的技能就會(huì)超出絕大多數(shù)普通人的能力。首先,要對(duì)“統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法”有著很深入的研究,既要會(huì)預(yù)測(cè),還要能解釋為什么要這樣預(yù)測(cè),對(duì)吧?
如果要預(yù)測(cè)股票是漲還是跌,就必須得有一套可以解釋給客戶聽的理論,還要有一套預(yù)測(cè)方法,讓程序能夠按照這個(gè)方法去執(zhí)行,并得出預(yù)期的結(jié)論。
現(xiàn)如今,數(shù)據(jù)已經(jīng)不值錢了,哪里都是大量的數(shù)據(jù),值錢的是通過對(duì)這些數(shù)據(jù)進(jìn)行分析,得出指導(dǎo)性的建議——這就要求科學(xué)家要有數(shù)據(jù)處理的能力。
不多說了,這方面的要求非常高,最起碼也得考個(gè)研究生吧。
04、數(shù)據(jù)分析師的技能要求
數(shù)據(jù)分析也可以細(xì)分為兩個(gè)領(lǐng)域,一個(gè)類似產(chǎn)品經(jīng)理,更注重業(yè)務(wù),對(duì)業(yè)務(wù)能力要求比較高;一個(gè)偏向數(shù)據(jù)挖掘,更注重技術(shù),對(duì)算法和數(shù)據(jù)結(jié)構(gòu)要求比較高。
那不管是產(chǎn)品經(jīng)理還是做數(shù)據(jù)挖掘,SQL 是必知必會(huì)的,因?yàn)閿?shù)據(jù)分析師每天都要處理海量的數(shù)據(jù),而這些數(shù)據(jù)來自哪呢?就是數(shù)據(jù)庫。那怎么把數(shù)據(jù)從數(shù)據(jù)庫中取出來呢?SQL 語句(select * from xxx,哈哈),別無其他。
那還需要什么技能呢?統(tǒng)計(jì)學(xué)基礎(chǔ),對(duì),沒錯(cuò),數(shù)據(jù)和時(shí)間的關(guān)系,數(shù)據(jù)的動(dòng)態(tài)分布,數(shù)據(jù)的最大值、最小值、平均值,這些都需要一定的統(tǒng)計(jì)學(xué)基礎(chǔ)。
當(dāng)然了,做數(shù)據(jù)分析比較好的編程語言是 R 語言或者 Python,所以還需要學(xué)習(xí)一下這兩門語言。不過,有了 Java 作為基礎(chǔ),學(xué) Python 就會(huì)更容易些,因?yàn)?Python 本身的語言更簡(jiǎn)潔。(R 語言主要用于統(tǒng)計(jì)分析、繪圖、數(shù)據(jù)挖掘)
推薦兩本書吧,《深入淺出數(shù)據(jù)分析》和《精益數(shù)據(jù)分析》。
05、最后
好了,我已經(jīng)把要學(xué)習(xí)的技能告訴同學(xué)們了,接下來,就靠同學(xué)們自己的修行了??磿蛘呔W(wǎng)上找資料(按照關(guān)鍵字去搜索),都可以,關(guān)鍵就看你愿不愿意沉下心,去花時(shí)間鉆研了。
執(zhí)行力,很重要,對(duì)吧?