跳轉到主要內容
Beplay体育安卓版本平台的博客

如何加快磚和情景應用程序之間的數據流

分享這篇文章

這是一個協作和磚之間beplay娱乐iosT1A。我們感謝奧列格•Mikhov T1A的解決方案架構師來說,他的貢獻。


這是第一個在一係列的博客彙集的最佳實踐磚Lakehouse平台Beplay体育安卓版本和情景應用程序。前一個磚博客介紹了磚和PySpark情景應用程序開發人員。在這篇文章中,我們討論情景應用程序之間交換數據的方式和磚Lakehouse平台,加快數據流的方法。Beplay体育安卓版本在未來的文章中,我們將探索建立有效的數據和分析管道包括兩種技術。

數據驅動的組織正在迅速采用LakehouseBeplay体育安卓版本平台,以跟上不斷增長的業務需求。Lakehouse平Beplay体育安卓版本台已成為新規範組織想要建立數據平台和架構。現代化需要移動數據、應用程序或其他商業元素到雲上。然而,過渡到雲計算是一個循序漸進的過程,關鍵業務繼續利用遺留盡可能長時間的投資。有鑒於此,許多公司往往有多個數據和分析平台,平台共存和互補的地方。Beplay体育安卓版本

我們看到的一個組合是使用SAS數據磚Lakehouse。有很多好處使兩個平台有效地一起工作,如:Beplay体育安卓版本

  • 大的雲平台和可伸縮的數據存儲功能Beplay体育安卓版本
  • 使用技術更大的計算能力,例如Apache火花™,本機具有並行處理能力
  • 實現更大的符合數據治理和管理使用三角洲湖
  • 較低的成本數據分析與簡化基礎設施架構

一些常見的數據科學與數據分析用例和觀察到的原因:

  1. SAS從業者利用SAS統計軟件包開發其核心高級分析輸出符合監管要求時使用磚Lakehouse數據管理、英語教學類型的處理和數據治理
  2. 機器學習模型開發的SAS得分在大量數據使用並行處理架構Lakehouse Apache火花引擎的平台Beplay体育安卓版本
  3. SAS數據分析師獲得更快的訪問大量數據的Lakehouse平台特別分析和報告使用磚SQL端點和高帶寬連接器Beplay体育安卓版本
  4. 緩解雲現代化和遷移旅程通過建立混合一工作流程涉及雲架構和on-prem情景應用程序平台Beplay体育安卓版本

然而,這種共存的一個關鍵挑戰是如何性能在兩個平台之間共享數據。Beplay体育安卓版本在這個博客中,我們分享最佳實踐實現顧客T1A和基準測試結果比較不同磚和情景應用程序之間移動數據的方法。beplay体育app下载地址

場景

最受歡迎的用例是一個SAS lakehouse開發者試圖訪問數據。分析管道包括兩種技術都需要在兩個方向:數據流數據從磚搬到情景應用程序和數據從SAS數據磚。

  1. 從情景應用程序訪問三角洲湖:SAS用戶想要訪問在三角洲湖大數據使用SAS編程語言。
  2. 從磚訪問SAS數據集:磚用戶希望訪問的SAS數據集,通常sas7bdat數據集作為數據磚DataFrame處理管道或存儲在三角洲湖企業範圍的訪問。

在我們的基準測試中,我們使用以下環境設置:

  1. 微軟Azure雲平台Beplay体育安卓版本
  2. SAS 9.4 m7 Azure(單節點標準d8 v3 VM)
  3. 磚9.0運行時,Apache火花3.1.2(2節點標準DS4v2集群)

圖1顯示了組件的概念架構圖進行了討論。磚Lakehouse坐在Azure的數據存儲與三角洲湖湖獎章架構。SAS 9.4在Azure上安裝虛擬機連接到磚Lakehouse讀/寫數據使用連接選項在以下部分中討論。

SAS和磚概念性架構圖在Azure上
圖1 sa和磚概念在Azure架構圖

上麵的圖表顯示了一個概念性的建築磚部署到Azure。其他雲平台架構將是相似的。Beplay体育安卓版本在這個博客中,我們隻討論與SAS 9.4平台的集成。Beplay体育安卓版本在以後的博文中,我們將擴展這個討論從SAS Viya lakehouse數據的訪問。

從情景應用程序訪問三角洲湖

假設我們有一個三角洲湖表需要在SAS程序進行處理。我們想要訪問這個表時最佳的性能,同時也避免任何可能的問題與數據完整性或數據類型兼容。有不同的方法來實現數據完整性和兼容性。下麵我們討論幾個方法並比較它們在易用性和性能。

在我們的測試中,我們使用電子商務行為數據集(5.67 gb、9列~ 42機記錄)Kaggle。
數據源信貸:電子商務行為多類別的數據存儲和REES46營銷平台。Beplay体育安卓版本

測試方法

1。使用SAS /訪問接口連接器
傳統上,SAS用戶利用SAS /訪問軟件連接到外部數據源。你可以使用SAS庫名語句指向磚集群或使用SQL直通設施。目前對SAS 9.4,有三個連接選項。

  1. SAS / ODBC訪問接口
  2. SAS / JDBC訪問接口
  3. SAS /訪問接口火花

SAS /訪問接口引發最近加載與磚獨家支持集群功能。看到這個視頻一段演示。視頻中提到SAS Viya但同樣的適用於SAS 9.4。

在如何使用這些代碼示例連接器可以在這找到git存儲庫:T1A Git - SAS庫的例子

2。使用saspy的包
開源庫,saspy,從SAS研究所允許磚筆記本用戶運行SAS語句從一個Python細胞在筆記本上執行代碼的情景應用程序服務器,以及從SAS數據導入和導出數據到熊貓DataFrame。

自本節的重點是訪問lakehouse SAS程序員使用SAS編程數據,這種方法被包裹在一個SAS宏程序類似於專用集成方法討論了下一個。

用這個包來實現更好的性能,我們測試的配置定義char_length選項(細節可用在這裏)。有這個選項,我們可以定義長度的字符字段的數據集。在我們的測試中使用這個選項將額外增加15%的性能。傳輸層之間的環境中,我們使用了saspy配置SSH連接到情景應用程序服務器。

3所示。使用一個專用的集成
盡管上麵提到的兩種方法有其好處,可以進一步提高性能,解決了一些缺點,下一節討論(測試結果),以前的方法。有鑒於此,我們開發了一個SAS macro-based集成效用與SAS用戶主要關注性能和可用性。SAS宏可以很容易地集成到現有的SAS代碼沒有任何知識磚平台,Apache火花或Python。Beplay体育安卓版本

宏觀協調使用磚API的一個多步過程:

  1. 指示磚集群的查詢和提取數據所提供的SQL查詢和緩存的結果DBFS,依靠其火花SQL分布式處理能力。
  2. 壓縮和安全地傳輸數據到情景應用程序服務器在SSH GZIP (CSV)
  3. 解包並將數據導入情景應用程序,讓它在SAS用戶可用的庫。在這一步中,利用從磚列元數據數據目錄(列類型、長度和格式)一致的、正確的和有效的在SAS數據表示

請注意,對於變長數據類型,集成支持不同的配置選項,取決於最適合用戶需求等,

  • 需要使用一個可配置的默認值
  • 分析10000行(+添加空間)來確定最大的價值
  • 分析整個列數據集來確定最大的價值

這裏提供一個簡化版本的代碼T1A Git - SAS DBR定製的集成

最終用戶使用的SAS宏看起來如下所示,需要三個輸入:

  1. SQL查詢,基於數據將從磚
  2. SAS libref數據應該在這個機場降落的
  3. 給SAS數據集名稱

測試結果

磚SAS數據訪問方法的性能
圖2磚SAS數據訪問方法的性能

如圖所示在上麵的圖中,測試數據集,結果表明SAS / JDBC訪問接口Apache火花SAS /訪問接口顯示出類似的性能和表現比其他方法低。主要原因是JDBC方法不配置文件字符列在數據集設置適當的列長度在SAS數據集。相反,他們為所有字符定義默認長度列類型(字符串和Varchar) 765符號。不僅導致性能問題在初始數據檢索但是進一步處理。此外,它消耗了大量額外的存儲。在我們的測試中,對於5.6 GB的源數據集,我們結束了一個216 GB的文件在圖書館工作。然而,隨著SAS / ODBC訪問接口長度,默認是255符號,這導致了顯著的性能提高。

使用SAS /訪問接口方法為現有的SAS用戶是最方便的選擇。有一些重要的注意事項,當你使用這些方法

  1. 這兩個解決方案支持隱式查詢直通但是有一些限製:
  • SAS / JDBC / ODBC訪問接口隻支持直通PROC SQL語句
  • 除了直通SAS / PROC SQL接口訪問Apache火花支持直通的SQL函數。這種方法還允許將常見的SAS程序磚集群。
  • 問題設置之前描述的字符列的長度。作為一個解決方案,我們建議使用DBSASTYPE選項來顯式地設置列長度SAS表。這將有助於進一步處理的數據集,但不會影響從磚的初始檢索數據
  • SAS / Apache火花/ JDBC / ODBC訪問接口不允許結合不同的磚數據庫中的表(模式)分配不同的庫名相同的查詢與直通設施(加入)。相反,它將導致出口整個表在SAS的SAS和處理。作為一個解決方案,我們建議創建一個專用的模式在磚將包含來自不同數據庫視圖基於表(模式)。

使用saspy方法顯示稍微更好的性能相比,SAS / JDBC訪問接口/火花的方法,然而,主要缺點是saspy圖書館隻與熊貓DataFrames Apache火花上產生很大的負載驅動程序,需要整個DataFrame被拉到內存中。

專用集成方法顯示最佳的性能比其他測試方法。圖3顯示了一個流程圖的高層指導選擇方法進行了討論。

磚SAS數據訪問方法的選擇
圖3數據磚SAS數據訪問方法的選擇

從磚訪問SAS數據集

這部分地址由磚開發人員需要攝取SAS數據集湖成三角洲並使其在磚商業智能、視覺分析,和其他高級分析用例雖然有些前麵描述的方法都是適用的,一些額外的方法進行了討論。

在測試中,我們從一個SAS數據集(sas7bdat格式)在情景應用程序服務器上,最後,我們有這個數據集可以引發DataFrame適用(如果懶惰調用我們強迫DataFrame加載數據和測量的總時間)在磚。

我們使用同樣的環境,同樣的數據集對於這個場景使用在前麵的場景。測試不考慮使用SAS用戶寫一個數據集情況下湖成三角洲使用SAS編程。這包括考慮雲提供商的工具和能力將在以後的博客中討論。

測試方法

1。利用SAS saspy包
sd2dfsaspy庫中的方法將一個SAS數據集轉換為大熊貓DataFrame,使用SSH數據傳輸。它提供了幾個選擇暫存存儲器(內存、CSV、磁盤)中轉移。在我們的測試中,CSV選項,它使用PROC出口CSV文件和熊貓read_csv()方法,這是推薦的選擇對於大型的數據集,表現出最好的性能。

2。使用熊貓方法
年初以來版本熊貓允許用戶讀取sas7bdat文件使用熊貓。read_sas API。情景應用程序文件應該訪問python程序。常用的方法是FTP、HTTP或搬到雲S3等對象存儲。我們,而用一個更簡單的方法將情景應用程序文件從遠程情景應用程序服務器使用SCP磚集群。

3所示。使用spark-sas7bdat
Spark-sas7bdat是一個開源包專為Apache開發的火花。類似於pandas.read_sas()方法,必須文件係統上可用的情景應用程序文件。我們下載sas7bdat文件從遠程使用SCP情景應用程序服務器。

4所示。使用一個專用的集成
這是探索另一種方法是使用傳統的技術重點是平衡方便和性能。該方法抽象出核心集成,提供給用戶作為一個Python庫,執行從磚筆記本。

  1. 使用saspy包執行SAS宏代碼(SAS服務器上)以下
  • 使用SAS代碼sas7bdat導出到CSV文件
  • CSV文件的GZIP壓縮
  • 將壓縮文件移動到磚使用SCP集群驅動節點
  • CSV文件解壓縮
  • 讀取Apache火花DataFrame CSV文件

測試結果

SAS磚數據訪問方法的性能
圖4 SAS磚數據訪問方法的性能

spark-sas7bdat顯示最佳的性能在所有的方法。這個包充分利用並行處理在Apache的火花。它分配塊sas7bdat工人節點上的文件。這種方法的主要缺點是sas7bdat特有的二進製格式,和圖書館建立了基於逆向工程的二進製格式,所以它不支持所有類型的sas7bdat文件,以及它不是正式(商業)廠商支持。

saspy熊貓方法是相似的,他們都是為單個節點環境和建造兩個熊貓DataFrame要求讀取數據之前的一個額外的步驟作為火花DataFrame保持數據的可用性。

專用集成宏觀表現出更好的性能比較saspy熊貓因為它從CSV通過Apache火花api讀取數據。然而,它不會打敗年代的性能park-sas7bdat包中。專門的方法可以方便的在某些情況下,因為它允許添加中間情景應用程序服務器上的數據轉換。

結論

越來越多的企業開始關注建設一個磚Lakehouse和有多種方法訪問數據的Lakehouse通過其他技術。這個博客討論如何情景應用程序開發人員、科學家和其他數據業務用戶可以利用Lakehouse中的數據並將結果寫入雲。在我們的實驗中,我們測試了幾種不同的方法,閱讀和寫作磚和情景應用程序之間的數據。不僅通過性能,但不同的方法方便和他們提供額外的功能。

對於這個測試,我們使用SAS 9.4 m7平台。Beplay体育安卓版本SAS Viya支持大多數的討論方法,還提供了額外的選項。如果你想了解更多關於這些方法或其他專門的集成方法不在這裏,隨時與我們聯係(電子郵件保護)

在即將到來的這個博客係列文章中,我們將討論最佳實踐實施集成數據管道、端到端流程中,使用SAS和磚和如何利用SAS數據庫內的技術SAS得分模型在磚集群。

SAS®和其他所有SAS研究所公司產品或服務的名稱注冊商標或商標的SAS研究所inc .)在美國和其他國家。®表明美國注冊。

開始

試一試,磚SAS用戶,在磚學院的基本實踐經驗PySpark SAS編程語言結構和編程聯係我們更多地了解我們如何協助你的SAS團隊在他們的ETL工作負載數據磚,使最佳實踐。

免費試著磚

相關的帖子

看到所有Beplay体育安卓版本平台的博客的帖子
Baidu
map