1樓:xiaohei
根據表述,工作中Spark是作為乙個「大資料分析工具」來使用的,那麼DataFrame的API已經足夠使用了。
如果分析邏輯特別複雜或者覺得DF的API效能差需要「優化」(DF的API效能差或者甚至沒有提供,比如矩陣轉置計算等),自己要寫個高效能的版本,那麼RDD的API能夠幫助你完成這個事情。
所以,日常工作DataFrame API足夠使用,往高階發展RDD API也是神兵利器。
另外,如果Spark在分析工作中佔比很大(或者說要分析的資料量很大不得不使用),那了解Spark的執行原理和優化技巧就特別重要,相信你也不願意總是一兩個小時之後才能看到結果繼續迭代吧:-)
寫程式實現功能很簡單,難的是怎麼讓程式以最好、最快、最高的執行效率執行無誤。
那麼可以往Spark的技術細節裡面去了解:
Spark是如何通過從邏輯執行圖轉化為物理執行圖來實現分布式計算的?
Shuffle過程與管理是怎麼回事兒?
記憶體模組、資料共享等其他模組細節都有哪些?
了解完之後你會對Spark的體系有乙個比較系統的認識。
然後根據這些體系知識,從程式開發、資源配置、資料傾斜、Shuffle管理、記憶體使用等方面都根據業務邏輯、應用場景,找到對應的優化技巧。
xiaohei:Spark最佳實踐
主要從四個部分介紹Spark技術與應用:
Spark效能優化:基於前兩章的基礎知識的鋪墊,本章將會從程式開發、資源配置、資料傾斜、Shuffle管理、記憶體使用等方面提供優化技巧,可以為開發人員提供相關的調優思路。
Spark最佳實踐:在最後一章中,作者整理了大量Spark開發過程中的實踐經驗與應用技巧,從編碼、監控、資料處理等幾個大維度提供Spark應用程式開發的最佳實踐思路參考。
2樓:富貴竹
Spark需要和其他的元件整合起來才能發揮最大的作用,所以建議樓主還需要學習一些Hive,Kudu等其他元件,了解一下這些元件是如何與Spark進行整合的,各適合什麼樣的場景。
3樓:turbofei
學習Spark可以分為兩個方向。
一種是資料平台開發,另一種是資料分析。
做資料平台開發需要了解Spark的核心原始碼,了解其排程,解析,執行。
做資料分析人員,企業中使用較多的是SQL,需要對Sql了解一些,比如 distributed by的使用。
了解一些spark 中的join分類, 了解sql中的引數。了解 data source, parquet的一些引數。
了解資料傾斜的場景,原理,如何解決資料傾斜。
了解Spark中的一些特性,比如 adaptive execution。
就算是做資料分析,也可以了解一些spark的基本原理,方便定位問題。
如果你是校招生,可能上面的一些點你也接觸不到。
4樓:向磊
竊以為對於spark資料分析新手來說,最重要的高階就是在集群情況下如何不讓executor掛掉,如何合理的使用記憶體和正確預估資料傾斜的可能。
掌握合理的程式設計思維比學什麼語言和工具重要。
自學flink和spark,應該如何去學習呢?
搞個虛擬機器,三颱起 按照文件的描述去部署 然後乙個個運算元實驗過去 嘗試各種不同的配置項 嘗試各種高階特性,例如狀態後台,cep,機器學習等看更有深度的原理性文章,然後去實驗 嘗試看原始碼跟原理相互印證 這樣你大概能混過一些面試,但幹活還差了一點自學也就到這水平了,大資料是屠龍技,還得真的屠過龍才...
學習Spark一定要先學Hadoop嗎?
windofjava hadoop和spark,有關係,但並不是需要先學hadoop才能學spark的關係,它倆之間的對比如下 誕生的先後順序,hadoop屬於第一代開源大資料處理平台,而spark屬於第二代 屬於下一代的spark肯定在綜合評價上要優於第一代的hadoop spark和hadoop...
3D max高階應該如何學習,去哪兒學習?
神仙姐姐 其實網上一堆教程3Dmax自學的,學完以後,你會了軟體,卻做不出來東西,或者做的東西不適合公司或者專案的需求。現在題主問高階如何學習,想必題主已經有3Dmax基礎了。高階的話,你可以考慮選擇你的方向了,用3Dmax可以幹很多任務作,可以做廣告,可以做室內設計,可以做遊戲建模。所以題主只有定...