取消
顯示的結果
而不是尋找
你的意思是:

如何優化我的數據管道?

User16835756816
價值貢獻

三角洲湖湖提供了優化,可以幫助你加速數據操作。這裏的如何提高查詢速度優化布局的數據存儲。

有兩種方法可以優化你的數據管道:1)筆記本優化和2)優化工作

筆記本使用三角洲寫優化優化

壓實(裝箱)

提高閱讀的速度查詢從表隻需添加幾行代碼。裝箱計劃生產均衡數據文件對磁盤上它們的大小,但不一定是元組每個文件的數量。

z值(多維聚簇)

z值是一個技術把相關信息在同一組文件,大大減少了三角洲湖需要讀取的數據量在執行一個查詢。

觸發壓縮通過運行優化命令和觸發z值通過運行ZORDER命令。找到兩者的語法在這裏

工作的優化使用工作流

減少所需的手動工作串接你的單任務操作的工作變成一個多任務的格式。創建一個多任務工作的格式,使用任務在JobSettings指定字段設置為每個任務。找一個工作,有兩個筆記本的任務在這裏

降低你的問題,下麵的反饋和建議!

3回複3

ajaypanday6781
尊敬的貢獻者二世

謝謝你的分享。

Hubert_Dudek1
尊敬的貢獻者三世

從我的一些建議:

  • 尋找數據傾斜;一些分區可以是巨大的,小的,因為不正確的分區。您可以使用火花UI,但也調試代碼有點(get getNumPartitions()),尤其是SQL可以把它不平等的分區(有設置連接器下界,等等)。你可以試著分區的數量作為工人的核心乘以X(所以他們將處理隊列中一步一步),
  • 檢查數據泄漏在火花UI意味著寫作洗牌從RAM和磁盤分區。(25、50和75百分位應該是類似的)。增加洗牌分區如果他們必須經常寫到磁盤上。
  • 增加調整大小spark.SQL.shuffle.partitions默認是200大,你應該計算數據大小除以分區的大小,
  • 增加司機的大小兩倍執行程序(但得到最優規模,請分析負載——在磚集群選項卡上的指標有Ganglia甚至更好地整合datadog集群),
  • 檢查寬轉換,在分區之間需要調整數據,組織他們做一個洗牌,
  • 如果您需要過濾數據,如果可能的話,做到在閱讀從SQL因此將表語推這將增加在SQL查詢,
  • 確保一切在一個分布式的方式運行,特別是UDF。它將幫助如果你使用矢量化熊貓udf將運行在執行人。甚至熊貓udf可以緩慢。你可以嚐試而不是注冊metastore中的SQL函數並使用它在您的SQL查詢。
  • 不要使用收集等,因為它們不是運行在分布式的方式,而是在驅動程序裝入內存對象的一切(就像在本地執行筆記本)
  • 關於基礎設施,使用更多的工人和檢查你的ADLS連接通過一個私人聯係。
  • 您還可以使用溢價ADLS更快。
  • 有時我處理大數據作為流更容易與大數據集。在這種情況下,你需要卡夫卡(彙合的雲很優秀)的SQL和磚之間。如果你使用流進行一次性處理,請使用AvailableNow而不是一次。
  • 讀取數據時,請記住,如果你閱讀從一個大分區文件(大約200 MB)將會更快。所以對於一個三角洲,閱讀前可以優化。當然,如果你讀,例如,持續x天每天分區將會更快,但運行優化可以幫助。
  • 關於寫作,最好的是,你得到盡可能多的文件核/分區默認情況下,每個核心並行正在寫一個文件。以後你可以通過提及優化合並它們。請檢查每個文件大小相似。如果沒有,看來你有一個傾斜的分區。在一個巨大的數據集,有時是好鹽,然後分區數量,數量比相等(你可以從SparkContext獲得核的數量。DefaultParallelism屬性)

謝謝你分享你的偉大的技巧@Hubert杜德克

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map