跳轉到主要內容
工程的博客

之間的增量毫升今天和明天有效毫升

分享這篇文章

三角洲湖和MLflow都在談話中經常出現,但往往是兩個完全不同的產品。這個博客將專注於三角洲湖之間的協同效應和MLflow機器學習用例和解釋如何利用三角洲湖大力毫升結果基於堅實的數據基礎。

如果你工作作為一個數據科學家,或許你已經完整的建模流程排序和潛在的甚至部署投入生產使用MLflow機器學習模型。你可能已經嚐試使用MLflow跟蹤和推廣模型使用MLflow模型注冊表。你可能很滿意這個提供再現性,當你能夠跟蹤代碼版本,集群設置和數據的位置。

但是如果你可以減少你的時間花在數據探索?如果你能看到確切的版本的數據用於開發嗎?如果性能的培訓工作並不是你所希望的或者你經曆的記憶(伯父)錯誤?

這些都是有效的思想和可能出現在整個毫升的開發和部署過程。想出一個解決方案可以相當具有挑戰性,但解決這些可伸縮性問題的一種方法是通過使用三角洲湖。

三角洲湖(δ)是一個開源存儲層給你帶來可靠性數據的湖。它不需要你改變你的工作方式或學習新的API體驗帶來的好處。這個博客關注常見問題,數據科學家和ML工程師和突顯出三角洲可以緩解這些。

我的查詢是緩慢的,但是我不明白為什麼。

根據數據集的大小,你可能會發現,學習更多關於你的數據是一個耗時的過程。即使並行查詢,不同的基礎流程可能還讓一個查詢慢。有一個優化的δ引擎,這增加了各種類型的查詢的性能,包括ETL以及臨時查詢可用於探索性數據分析。如果性能還不像預期的那樣,三角洲格式使您能夠使用描述的細節功能。這允許您快速了解表的大小你查詢,它包含多少文件,以及一些關鍵的信息模式。這樣,三角洲給你內置的工具來識別性能問題在你的筆記本和抽象的一些複雜性。

三角洲湖格式使您能夠使用描述細節不僅快速了解到的大小表你查詢和它包含多少個文件還有一些關鍵的模式信息。

等待運行一個查詢是一種常見的問題,隻會變得更糟隨著數據量越來越大。幸運的是,達美航空提供了一些優化,您可以利用,如數據不隨著數據的增長和新數據插入到磚δ表,文件級最小/最大統計收集所有支持的列類型。然後,當你想查詢的表,磚三角洲首先谘詢這些統計數據,以確定哪些文件可以安全地忽略,哪些是相關的。三角洲湖上磚利用這些信息在查詢時,提供更快捷的查詢,它不需要配置。

另一種利用數據跳過功能是明確建議三角洲優化數據列(s)。這個可以用z值,一個技術把相關信息在同一組文件。簡而言之,應用ZORDER一列將幫助你結果更快如果你反複查詢同一列的表和一個過濾器。這將適用特別是列基數高,換句話說,大量的不同的值。

三角洲湖的z值功能有助於速度查詢通過確定哪些文件可以安全地忽略。

最後,如果你不知道最常見的謂詞的表或在一個探索階段,你可以通過合並優化表小文件到大的。這將減少掃描的文件當你查詢數據,通過這種方式,提高性能。您可以使用優化沒有指定命令ZORDER列。

三角洲湖優化合並小文件到較大的區域,減少文件掃描的數量更大的查詢性能。

如果你有一個大的數據量,隻有想優化的一個子集,您可以指定一個可選的分區謂詞使用指示你隻想優化數據的一個子集(例如隻有最近添加的數據)。

如果您隻希望優化您的數據的一個子集,三角洲湖將允許您指定一個可選的分區使用位置謂詞。

我的數據不適合在內存中。

模型訓練過程中,在某些情況下,您可能需要火車模型的特定子集數據或過濾數據在一個特定日期範圍,而不是完整的數據集。通常的工作流程將會閱讀所有的數據,此時所有的掃描和數據加載到內存中,然後保持它的相關部分。如果過程不打破在這個階段,它肯定會非常緩慢。但剛從一開始閱讀必要的文件,以這種方式不允許您的機器過載數據將被刪除呢?這就是分區修剪可以非常方便的。

簡而言之,在談到一個分區時,我們實際上是指每個分區列中不同值的子目錄(年代)。如果數據分區的列上你想應用過濾器,然後修剪技術將使用隻讀必要的文件通過掃描正確的子目錄中,忽略了休息。這看起來像一個小贏,但如果你因素所需的迭代次數/讀取完成一個模型,然後這變得更加重要。所以理解查詢數據的頻繁模式會導致更好的分區的選擇和更便宜的操作。

或者,在某些情況下,你的數據沒有分區,你伯父錯誤經驗,為您的數據根本不適合在一個執行人。使用的組合描述細節,分區和ZORDER可以幫助您理解如果這是錯誤的原因並解決它。

我花一半我的天提高數據質量。

它經常發生數據團隊正在與一個數據集,發現變量保存錯誤的數據,例如從1485年一個時間戳。確定這些數據問題和消除這樣的值可以是一個繁瑣的過程。刪除這些行也往往是昂貴的從計算的角度來看,使用.filter查詢()將是相當昂貴的。在一個理想的場景中,你會完全避免錯誤數據被添加到一個表。這就是三角洲的約束三角洲生活表期望可以幫助。特別是,三角洲生活表允許您指定預期的數據質量和數據也應該發生什麼,不符合要求。而不是刪除數據回顧,現在您可以主動保持數據清潔和準備使用。

三角洲毫升草案代碼示例結果博客img

在類似的方式,我們可能希望避免人們不小心將列添加到數據我們正在使用的建模。還在這裏三角洲提供了一個簡單的解決方案:自動模式更新。默認情況下,數據寫入一個增量表需要遵守已知的模式,除非另有說明。

三角洲湖自動模式更新確保模式與正在寫入的數據的兼容性。

如果有人改變了模式無論如何,這可以很容易地通過使用檢查描述詳細的命令,一個緊隨其後描述曆史給一個快速概述的模式看起來像現在和誰可能已經改變了模式。這允許您與你的數據科學家,工程師或數據分析師理解他們為什麼改變,這種改變是否合法。

三角洲湖描述曆史命令提供了一個快速概述當前的模式和更新日誌與用戶名和變化的細節。

如果你發現仍然改變不合理的或意外,你也可以選擇恢複或恢複使用前一個版本的數據時間旅行能力。

我不知道數據用於訓練和無法複製的結果。

當創建特性對於一個特定的模型,我們可以試一試不同版本的特性。使用不同版本的相同的特性會導致一係列的挑戰。

  • 培訓結果不再重現失去跟蹤特定版本的特性用於培訓。
  • 模型在生產的結果不符合標準的訓練結果,是生產中使用的功能可能不是太一樣訓練期間使用。

為了避免這種情況,一個解決方案是創建多個版本的功能表並將它們存儲在blob存儲(使用例如Apache拚花)。具體路徑作為參數使用的數據可以被記錄在你MLflow運行。然而,這仍然是一個手動過程,可以吸收大量的數據存儲空間。這裏,三角洲提供了一個選擇。而不是手動保存您的數據的不同版本,您可以使用增量版本自動跟蹤已經改變,您的數據。除此之外,支持autologging三角洲整合各種MLflow口味等mlflow.spark.autolog ()跟蹤的位置數據用於模型訓練和版本如果你的數據存儲在三角洲。通過這種方式,你可以避免存儲多個版本的數據,可以降低存儲成本以及周圍的混亂什麼數據被用於一個特定的訓練。

而不是手動保存您的數據的不同版本,您可以使用三角洲湖版本自動跟蹤版本的數據用於訓練。

然而,沒完沒了的版本的存儲你的數據仍可能讓你擔心存儲成本。三角洲容易照顧這通過提供一個保留的閾值(真空)數據版本您想要的數量。在這種情況下,你想要存檔數據長時間檢索在稍後的時間點,比如當你想a / B測試的一種新模式,您可以使用三角洲克隆。深克隆完全複製元數據和數據文件被克隆的指定版本,包括分區、約束和其他信息。作為深克隆的語法很簡單,歸檔表模型的測試變得非常簡單。

三角洲克隆可以讓克隆的特定版本的一個完整副本文件的元數據和數據,包括分區、約束和其他信息。

刺激我的特性不匹配我用於開發的特性。

排序的數據版本控製挑戰,你可能仍然擔心代碼特定特性的再現性。這裏的解決方案將是磚特色商店δ,這是完全支撐和支持這個博客中概述的方法。三角洲表上做任何開發的功能可以很容易地記錄到存儲功能,跟蹤他們的代碼和版本創建。此外,它提供了額外的治理功能,以及查找邏輯來讓你的特性更好的可發現的和更有用的和許多其他功能。

更多的信息

如果你有興趣學習更多關於這個博客中討論的各種概念,看看下麵的參考資料。

結論

總之,在這個博客中,我們回顧了一些常見的數據科學家麵臨的挑戰。我們已經了解到三角洲湖可以減輕或刪除這些挑戰,進而導致更大的數據科學和機器學習項目成功的機會。

了解更多關於三角洲湖

免費試著磚
看到所有工程的博客的帖子
Baidu
map