如今隨著資料量的不斷增加,hadoop已經難以滿足處理需求,逐漸發展起來的spark基於記憶體的平行計算已經得到了廣泛的應用。
spark博大精深,編寫起來比hadoop方便很多,簡單的幾行**就可以實現hadoop複雜的**,簡單方便!著名的例子就是單詞統計。
對於spark效能的調優部分可以檢視美團點評團隊寫的文章
寫的很棒。
spark使用需要注意的幾個原則:
1、同乙個份資料只需要建立乙個rdd,不要建立多個rdd,避免浪費開銷;
2、對於多次使用的rdd將其持久化到快取,持久化的時候盡量使用序列化的持久化級別(memory_only_ser,memory_and_disk_ser)
3、避免使用多餘的rdd,盡可能的復用同乙個rdd;
4、避免使用shuffle操作,避免使用reducebykey、join、distinct、repartition等會進行shuffle的運算元,盡量使用map類的非shuffle運算元。
5、使用高效能的運算元:
使用reducebykey/aggregatebykey而不是用groupbykey;
使用filter之後一般需要進行coalesce對rdd的分割槽進行修改;
當需要對rdd進行重分割槽並排序的時候,盡量使用repartitionandsortwithinpartitions,在充分區的時候並進行排序操作,提高處理速度。
6、合理使用廣播變數,而不使用join進行操作
7、使用kryo進行spark的序列化操作。
spark RDD程式設計
rdd就是乙個不可變的分布式物件集合。建立rdd 1 讀取乙個外部資料集 sparkcontext.textfile 2 在驅動器程式中對乙個集合進行並行化。rdd 操 作 1 轉 化 操 作 transformation 會由乙個 rdd 生成乙個新的 rdd。2 行 動 操 作 action 會...
使用SparkRDD實現HBase分布式scan
利用spark rdd的分布式計算,將乙個scan任務按照自定義的範圍切分為小的scan,使用這些rdd實現對scan的並行查詢,提高查詢效率。核心是手動實現rdd的compute方法與getpartitions方法。本文中使用到的關於spark rdd方面的知識主要集中在rdd分割槽計算上,檢視s...
Spark RDD 程式設計例項
spark 最核心的概念就是rdd 彈性分布式資料集。rdd 是spark 運算元據的一種抽象,本質是分布式資料集合。這種集合被分為多個分割槽,這些分割槽執行在集群的不同節點上。我們在spark的shell 上執行的命令,會在每個分割槽上執行,最後將執行結果彙總起來就得到我們需要的結果。根據是否需要...