小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ParaText: 以2.5GB每秒的速度處理CSV文件

 自然科學思維 2016-09-14

作者:Damian Eads, June 7, 2016

 盡管在數據驅動的工作中,大多數人們都會使用分布式數據庫與文件系統(tǒng),但是在單機上快速讀取一個文件的需求仍然堅挺地存在著。令人驚訝的是,大多數現代的文件讀取器并沒有利用起多核的架構,導致在高性能存儲系統(tǒng)中大量的I/O帶寬被閑置。在這里介紹的ParaText可以在單個多核機器上并行地讀取文件以更有效地使用帶寬。Alpha版本包含了一個并行CSV讀取器。

在大約50年里,CSV一直被用做表格式數據的格式。由于CSV文件隨處可見,且在實際的工作流中處理CSV文件的需求也隨處可見——在這里速度,精度和容錯率都是必須的指標——因而我們決定構建一個并行的CSV讀取器。

我們還額外比較了ParaText7CSV讀取器以及5個二進制讀取器的性能。更多細節(jié)請參考我們的性能白皮書。在我們的測試中,ParaText可以以2.5GB/s的速度從一個磁盤加載一個CSV文件到內存,以及4.2GB/s的速度從內存寫入外存。ParaText可以在30分鐘內對一個5TBCSV文件完成解析及基于外存的計算。

為什么選CSV?

CSV的簡潔性是十分誘人的。從概念上講,CSV十分易于解析。它也是人類可讀的。電子表格軟件以及COBOL時期遺留的一些數據庫至少可以讀寫CSV文件。的確,CSV被廣泛用于交換表格化數據,但是不幸的是,RFC標準沒有跟緊實踐的步伐,導致CSV文件的擴展道路被扭曲了。CSV的格式缺少一個全世界都接受的模式,導致即使是“合適”的CSV文件也可能有模糊不清的語義,進而使每個應用對其有了不同的解釋。

盡管CSV存在這樣的問題,社區(qū)仍舊需要魯棒的工具來處理CSV數據。我們開始時構建了一個迅速的,內存使用高效的,通用的多核文本讀取器。我們的CSV讀取器是第一個使用這一基礎讀取器的成果。

發(fā)布與性能的亮點

ParaText CSV讀取器支持整型浮點型,文本以及可分類數據類型。它總是使用最窄的比特深度來節(jié)省內存。文本域可以多行擴展。一個小型的可分類編碼可以將重復的字符串映射為整數來降低內存占用率。

ParaText可以用一行代碼加載一個CSV文件到Pandas DataFrame。


ParaText列迭代器可以將數據填入很多種數據結構中(例如Python的字典類型,Pandas DataFrames, Dato SFrames, 或者Spark DataFrames.


在這里,expand關鍵字強制ParaText使用字符串來表示類別,而不是使用整型。forget可以讓迭代器去釋放已經被解析器訪問過的列數據所占據的空間。

在我們的性能分析中,我們證明了ParaText的速度,效率,更多細節(jié)請參考性能白皮書。

數據

用于我們的性能測試的文件的大小從21MB5.076TB。白皮書中描述了每個數據集的特性以及如何下載他們。


每個數據集及每種文件格式的文件大小。二進制文件要比CSV文件更小。

1.ParaText是很快的!

ParaText有比其他任何在每個數據集上都測試過的CSV讀取器更高的吞吐量。


什么使得一個讀取器更快?一個快速的讀取器可以利用存儲系統(tǒng)的能力。四個數據集:car(6.71GB, 大量可分類數據),floats4(25.5GB, 大量浮點數), mnist8m(14.96GB, 小整數)messy2(2.1GB, 大量文本)。每個CSV加載器的吞吐展示在圖中。I/O帶寬黑色來表示,便于比較。遺漏的條形或者是由于崩潰,或者是錯誤,或者是不一致性導致。

2.ParaText內存使用很有效!

ParaText有最少的內存使用量。對Dato SFrame來說,如果數據幀存儲在Dato的內核時,它就有非常低的內存使用量。Spark預留了大量的堆空間。因此很難表述它的內存使用效率,進而更好地指導如何為Spark任務準備資源。


內存有效意味著更少的崩潰情況。預估內存使用可以確保準備足夠的云資源。

3.ParaText對陣二進制:仍然很快!

出色的二進制讀取器可以不經任何解析,類型判斷或錯誤檢查地讀取大量小型的文件。正如預料的那樣,二進制讀取器在比CSV10倍的二進制文件讀取上超過了CSV。


二進制讀取器在ParaText之前完成。然而,二進制讀取器處理的是更小的文件,列類型都已定義好的,并且錯誤處理是最少的。其中Pickle是最慢的。

然而,我們測試的二進制讀取器和ParaText相比,其I/O帶寬要低的多。


吞吐量問題。吞吐量能夠真實反映每個方法對可用帶寬的使用程度。雖然ParaText運行時間更長,但是它仍舊擁有比二進制方法高的吞吐量。H5PY(HDF5)對平行讀取可能需要更好的默認值。

4.數據幀的快速轉換

Spark DataFrame, Dato SFrame, ParaText都可以用一行代碼將他們內部表示的數據轉換為一個Python的對象。這提高了數據科學的交互體驗。

這種轉換是數據科學中交互體驗的一個重要部分。ParaText可以在數秒內轉換一個數GB的數據集,而SparkDato卻需要幾分鐘。


交互體驗?轉換成一個同等的Python表達式要花費Spark DataFramesDato SFrames數分鐘。

5.ParaText更加便宜!

按比例分配的Amazon Web Services(AWS)Wise ParaText的成本與其他方法相比卻是不成比例地低。


成本問題。每種方法按比例分配的成本對ParaText成本的倍數。

6.ParaText接近了硬件極限!

我們定義了兩個基準任務來建立CSV加載吞吐量的上界:換行符計數以及外存CSV解析。ParaText達到了非常接近由任務預估的I/O帶寬的吞吐量。


有多少開銷?我們對CSV文件加載,外存CSV解析,以及換行符計數與存儲系統(tǒng)帶寬做了比較。

7.ParaText是媒介數據

ParaText可以輕松處理數TB級別的數據。在我們的測試中,ParaTextSpark是僅有的能夠單機成功加載并計算一個超過1TB的文件。


有TB 的數據嗎?我們嘗試用了每個方法來加載medium1.csv(1.015TB)

感興趣嗎?

訪問GitHub并試一試ParaText吧。我們期待聽到你的聲音!


英文原文:http://www./tech/paratext
譯者:hanhan


    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多