先看再點贊,給自己一點思考的時間,微信搜索【沉默王二】關注這個有顏值卻假裝靠才華茍且的程序員。
本文 GitHub github.com/itwanger 已收錄,里面還有一線大廠整理的面試題,以及我的系列文章。
題目是一名叫“截然不同”的同學私信我的一個問題,原話是,“搞大數(shù)據(jù),java 需要掌握哪些技術點?”,我稍微調(diào)整了一下。必須得承認一點,我本人沒有搞過大數(shù)據(jù),所在這方面的經(jīng)驗為零。
但同學既然問了,咱就不能假裝不知道啊,雖然真的是不知道。但要變強,就必須無所畏懼,迎難而上,對吧?

幸好我身邊有一些朋友是做大數(shù)據(jù)的,我可以向他們請教,了解清楚后,我現(xiàn)在就把他們給我的建議整理一下發(fā)出來,希望給有需求的同學們一點幫助。
01、大數(shù)據(jù)的就業(yè)方向有哪些?
現(xiàn)實點,我們掌握任何技能都是為了就業(yè),為了能夠找份工作糊口;立志不打工的同學們請繞行哈。
那大數(shù)據(jù)的就業(yè)方向都有哪些呢?
大數(shù)據(jù)工程師
大數(shù)據(jù)科學家
數(shù)據(jù)分析師
那針對這些不同的就業(yè)方向,都需要哪些技能呢?我們來一一的分析下。
02、大數(shù)據(jù)工程師的技能要求
大數(shù)據(jù)工程師的門檻相對其他兩個較低一些,所以同學們可以重點關注一下這個方向。
先說一些必備的技能吧。
對 Java 虛擬機有著深入的研究,推薦書籍,周志明的《深入理解 Java 虛擬機》。
對 Java 并發(fā)掌握得很透徹,推薦書籍,《Java 并發(fā)編程實戰(zhàn)》。
掌握 Hadoop。Hadoop 是一款支持數(shù)據(jù)密集型分布式應用程序并以 Apache 2.0 許可協(xié)議發(fā)布的開源軟件框架,可以使應用程序與成千上萬的獨立計算的電腦和 PB 級的數(shù)據(jù)連接起來,整個 Hadoop “平臺”還包括 MapReduce、Hadoop 分布式文件系統(tǒng)(HDFS)。
掌握 HBase。HBase 是一個開源的非關系型分布式數(shù)據(jù)庫,是 Hadoop 項目的一部分,運行于 HDFS 文件系統(tǒng)之上,對稀疏文件提供極高的容錯率。
掌握 Hive。Hive 是一個建立在 Hadoop 架構之上的數(shù)據(jù)倉庫,能夠提供數(shù)據(jù)的精煉,查詢和分析。
掌握 Kafka。Kafka 的目標是為處理實時數(shù)據(jù)提供一個統(tǒng)一、高吞吐、低延遲的平臺。
掌握 Storm。Storm 是一個分布式計算框架,使用用戶創(chuàng)建的“管”和“螺栓”來定義信息源和操作,允許批量、分布式處理流式數(shù)據(jù)。
了解 Scala。Scala 是一門多范式的編程語言,設計初衷是要集成面向對象編程和函數(shù)式編程的各種特性??梢院?Java 兼容,運行在 Java 虛擬機上。
掌握 Spark。Spark 是一個開源集群運算框架,相對于 Hadoop 的 MapReduce 會在運行完工作后將中介數(shù)據(jù)存放到磁盤中,Spark 使用了存儲器內(nèi)運算技術,能在數(shù)據(jù)尚未寫入硬盤時即在存儲器內(nèi)分析運算。
會用 Linux。推薦書籍,鳥哥的《Linux 私房菜》。
再來說一些高階的技能吧。
會用 Python。
會用 R 語言。
精通算法和數(shù)據(jù)結構。
03、大數(shù)據(jù)科學家的技能要求
“科學家”,這個 title 聽起來就很牛逼,不會出乎同學們的意料,我小時候的夢想之一除了成為一名作家之外,就是成為一名“科學家”。
那大數(shù)據(jù)科學家,要求的技能就會超出絕大多數(shù)普通人的能力。首先,要對“統(tǒng)計機器學習方法”有著很深入的研究,既要會預測,還要能解釋為什么要這樣預測,對吧?
如果要預測股票是漲還是跌,就必須得有一套可以解釋給客戶聽的理論,還要有一套預測方法,讓程序能夠按照這個方法去執(zhí)行,并得出預期的結論。
現(xiàn)如今,數(shù)據(jù)已經(jīng)不值錢了,哪里都是大量的數(shù)據(jù),值錢的是通過對這些數(shù)據(jù)進行分析,得出指導性的建議——這就要求科學家要有數(shù)據(jù)處理的能力。
不多說了,這方面的要求非常高,最起碼也得考個研究生吧。
04、數(shù)據(jù)分析師的技能要求
數(shù)據(jù)分析也可以細分為兩個領域,一個類似產(chǎn)品經(jīng)理,更注重業(yè)務,對業(yè)務能力要求比較高;一個偏向數(shù)據(jù)挖掘,更注重技術,對算法和數(shù)據(jù)結構要求比較高。
那不管是產(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)計學基礎,對,沒錯,數(shù)據(jù)和時間的關系,數(shù)據(jù)的動態(tài)分布,數(shù)據(jù)的最大值、最小值、平均值,這些都需要一定的統(tǒng)計學基礎。
當然了,做數(shù)據(jù)分析最好的編程語言是 R 語言或者 Python,所以還需要學習一下這兩門語言。不過,有了 Java 作為基礎,學 Python 就會更容易些,因為 Python 本身的語言更簡潔。(R 語言主要用于統(tǒng)計分析、繪圖、數(shù)據(jù)挖掘)
推薦兩本書吧,《深入淺出數(shù)據(jù)分析》和《精益數(shù)據(jù)分析》。
05、最后
好了,我已經(jīng)把要學習的技能告訴同學們了,接下來,就靠同學們自己的修行了。看書,或者網(wǎng)上找資料(按照關鍵字去搜索),都可以,關鍵就看你愿不愿意沉下心,去花時間鉆研了。
執(zhí)行力,很重要,對吧?
我是沉默王二,一枚有顏值卻假裝靠才華茍且的程序員。關注即可提升學習效率,別忘了三連啊,點贊、收藏、留言,我不挑,奧利給??。
注:如果文章有任何問題,歡迎毫不留情地指正。
如果你覺得文章對你有些幫助,歡迎微信搜索「沉默王二」第一時間閱讀,回復關鍵字「小白」可以免費獲取我肝了 4 萬+字的 《Java 小白從入門到放肆》2.0 版;本文 GitHub github.com/itwanger 已收錄,歡迎 star。