什么是Feather?
Feature是一種文件格式,支持R語言和Python的交互式存儲,速度更快。目前支持R語言的data.frame和Python pandas 的DataFrame。
Feather收到了Apache arrow 項目的支持,Apache Arrow是Apache基金會下一個全新的開源項目,同時也是頂級項目。它的目的是作為一個跨平台的數據層來加快大數據分析項目的運行速度。
Feather的特點
feather是一個用於存儲數據框的快速的,輕量級的,易於使用的二進制文件格式。主要有以下特點:
- 輕量簡單
- 不依賴語言:支持python和R語言,同時也可以被其他語言讀取
- 高性能讀寫
代碼演示
我的電腦硬件配置:win7,64位操作系統,8G內存,CPU A6雙核。每個人電腦配置不同,數據讀寫的時間也就不同。讀者可自行實驗下述代碼,一看究竟。
feather
包的介紹於3月29號發布在RStudio的官方博客。由於當時只是發布在Github上,Windows用戶安裝需要使用gcc 4.93工具編譯安裝,過程比較繁瑣。feather
包今天正式在CRAN發布了第一版,現在我們只需在R 3.3.0下用install.packages()
函數安裝即可。沒有升級到R 3.3.0版本的windows用戶可以參考文章—手把手教你在Windows環境下升級R。下面我們在R中來試試feather
包到底有多快:
library(feather)
x <- runif(1e7)
x[sample(1e7, 1e6)] <- NA # 10%的NA值
df <- as.data.frame(replicate(10, x))
# 內存占用
format(object.size(df), 'MB')
#[1] "762.9 Mb"
#數據寫出
system.time(write_feather(df, 'test.feather'))
# 用戶 系統 流逝
# 3.97 3.37 29.47
#數據導入
system.time(read_feather('test.feather'))
# 用戶 系統 流逝
# 3.83 3.51 50.39
#查看下前幾行數據
data <- read_feather('test.feather')
head(data)
class(data)
[1] "tbl_df" "tbl" "data.frame"
本來要演示feather
包和readr
包的速度對比,但是電腦配置不行,readr
包數據寫出花了將近一個小時還沒什么動靜,果斷放棄了。關於readr
包的的介紹感興趣的讀者可以參考這里
小結
Feature速度快,但是還處在開發階段,官方認為暫時不適合長期存儲數據,而且不能保證不同版本的兼容性。但是可以用於R和Python的交互,也是相當相當棒了。762.9Mb數據導入只需50.39秒,feather包你值得擁有。
參考文章:
- Feather: A Fast On-Disk Format for Data Frames for R and Python, powered by Apache Arrow
- Feather R語言和Python交互式硬盤存儲格式
本文由雪晴數據網編輯整理。轉載請注明本文鏈接http://www.xueqing.tv/cms/article/210