天天看點

搞大資料,Java 工程師需要掌握哪些知識?

題目是一名叫“截然不同”的同學私信我的一個問題,原話是,“搞大資料,java 需要掌握哪些技術點?”,我稍微調整了一下。必須得承認一點,我本人沒有搞過大資料,所在這方面的經驗為零。

但同學既然問了,咱就不能假裝不知道啊,雖然真的是不知道。但要變強,就必須無所畏懼,迎難而上,對吧?

幸好我身邊有一些朋友是做大資料的,我可以向他們請教,了解清楚後,我現在就把他們給我的建議整理一下發出來,希望給有需求的同學們一點幫助。

01、大資料的就業方向有哪些?

現實點,我們掌握任何技能都是為了就業,為了能夠找份工作糊口;立志不打工的同學們請繞行哈。

那大資料的就業方向都有哪些呢?

大資料工程師

大資料科學家

資料分析師

那針對這些不同的就業方向,都需要哪些技能呢?我們來一一的分析下。

02、大資料工程師的技能要求

大資料工程師的門檻相對其他兩個較低一些,是以同學們可以重點關注一下這個方向。

先說一些必備的技能吧。

對 Java 虛拟機有着深入的研究,推薦書籍,周志明的《深入了解 Java 虛拟機》。

對 Java 并發掌握得很透徹,推薦書籍,《Java 并發程式設計實戰》。

掌握 Hadoop。Hadoop 是一款支援資料密集型分布式應用程式并以 Apache 2.0 許可協定釋出的開源軟體架構,可以使應用程式與成千上萬的獨立計算的電腦和 PB 級的資料連接配接起來,整個 Hadoop “平台”還包括 MapReduce、Hadoop 分布式檔案系統(HDFS)。

掌握 HBase。HBase 是一個開源的非關系型分布式資料庫,是 Hadoop 項目的一部分,運作于 HDFS 檔案系統之上,對稀疏檔案提供極高的容錯率。

掌握 Hive。Hive 是一個建立在 Hadoop 架構之上的資料倉庫,能夠提供資料的精煉,查詢和分析。

掌握 Kafka。Kafka 的目标是為處理實時資料提供一個統一、高吞吐、低延遲的平台。

掌握 Storm。Storm 是一個分布式計算架構,使用使用者建立的“管”和“螺栓”來定義資訊源和操作,允許批量、分布式處理流式資料。

了解 Scala。Scala 是一門多範式的程式設計語言,設計初衷是要內建面向對象程式設計和函數式程式設計的各種特性。可以和 Java 相容,運作在 Java 虛拟機上。

掌握 Spark。Spark 是一個開源叢集運算架構,相對于 Hadoop 的 MapReduce 會在運作完工作後将中介資料存放到磁盤中,Spark 使用了存儲器内運算技術,能在資料尚未寫入硬碟時即在存儲器内分析運算。

會用 Linux。推薦書籍,鳥哥的《Linux 私房菜》。

再來說一些高階的技能吧。

會用 Python。

會用 R 語言。

精通算法和資料結構。

03、大資料科學家的技能要求

“科學家”,這個 title 聽起來就很牛逼,不會出乎同學們的意料,我小時候的夢想之一除了成為一名作家之外,就是成為一名“科學家”。

那大資料科學家,要求的技能就會超出絕大多數普通人的能力。首先,要對“統計機器學習方法”有着很深入的研究,既要會預測,還要能解釋為什麼要這樣預測,對吧?

如果要預測股票是漲還是跌,就必須得有一套可以解釋給客戶聽的理論,還要有一套預測方法,讓程式能夠按照這個方法去執行,并得出預期的結論。

現如今,資料已經不值錢了,哪裡都是大量的資料,值錢的是通過對這些資料進行分析,得出指導性的建議——這就要求科學家要有資料處理的能力。

不多說了,這方面的要求非常高,最起碼也得考個研究所學生吧。

04、資料分析師的技能要求

資料分析也可以細分為兩個領域,一個類似産品經理,更注重業務,對業務能力要求比較高;一個偏向資料挖掘,更注重技術,對算法和資料結構要求比較高。

那不管是産品經理還是做資料挖掘,SQL 是必知必會的,因為資料分析師每天都要處理海量的資料,而這些資料來自哪呢?就是資料庫。那怎麼把資料從資料庫中取出來呢?SQL 語句(select * from xxx,哈哈),别無其他。

那還需要什麼技能呢?統計學基礎,對,沒錯,資料和時間的關系,資料的動态分布,資料的最大值、最小值、平均值,這些都需要一定的統計學基礎。

當然了,做資料分析最好的程式設計語言是 R 語言或者 Python,是以還需要學習一下這兩門語言。不過,有了 Java 作為基礎,學 Python 就會更容易些,因為 Python 本身的語言更簡潔。(R 語言主要用于統計分析、繪圖、資料挖掘)

推薦兩本書吧,《深入淺出資料分析》和《精益資料分析》。

05、最後

好了,我已經把要學習的技能告訴同學們了,接下來,就靠同學們自己的修行了。看書,或者網上找資料(按照關鍵字去搜尋),都可以,關鍵就看你願不願意沉下心,去花時間鑽研了。

執行力,很重要,對吧?