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





