搞大數(shù)據(jù),Java 工程師需要掌握哪些知識?

先看再點贊,給自己一點思考的時間,微信搜索【沉默王二】關注這個有顏值卻假裝靠才華茍且的程序員。
本文 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。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容