跳到內容

arrow 19.0.0

arrow 18.1.0

CRAN 發布:2024-12-05

次要改進與修正

  • 修正綁定以允許在資料集中使用 %in% 過濾因子欄位 (#43446)
  • 更新 str_sub 綁定以正確處理負 end 值 (@coussens, #44141)
  • 修正來自 readr 的 altrep 字串欄位 (#43351)
  • 修正 ParquetFileWriter$WriteTable 中的崩潰問題並新增 WriteBatch (#42241)
  • 修正 Math 群組泛型中的綁定 (@aboyoun, #43162)
  • 修正對分組查詢執行 pull 會傳回錯誤欄位的問題 (#43172)

arrow 17.0.0

CRAN 發布:2024-08-17

新功能

  • 使用者編寫的 R 函數若使用 Arrow 在資料集查詢中支援的函數,現在也可以在查詢中使用。先前,只有使用算術運算子的函數才能運作。例如,time_hours <- function(mins) mins / 60 可以運作,但 time_hours_rounded <- function(mins) round(mins / 60) 無法運作;現在兩者都可以運作。這些是自動翻譯而非真正的使用者定義函數 (UDF);如需 UDF,請參閱 register_scalar_function()。 (#41223)
  • mutate() 表達式現在可以包含聚合,例如 x - mean(x)。 (#41350)
  • summarize() 支援更複雜的表達式,並正確處理在表達式中重複使用欄位名稱的情況。 (#41223)
  • 現在支援 dplyr::*_join() 函數的 na_matches 引數。此引數控制在聯結時是否將 NA 值視為相等。 (#41358)
  • R 中繼資料儲存在 Arrow 結構描述中,以支援 R 和 Arrow/Parquet 之間往返資料,現在以更嚴格的方式序列化和反序列化。這使得從未知來源將檔案中的資料載入 R data.frames 更安全。 (#41969)

次要改進與修正

  • 預設為 macOS 開啟 S3 和 ZSTD 功能。 (#42210)
  • 修正 Math 群組泛型中的綁定。 (#43162)
  • 修正我們在分組資料集上實作 pull 的錯誤,現在它會傳回預期的欄位。 (#43172)
  • 建置 Arrow R 套件可使用的最低 Arrow C++ 程式庫版本已提升至 15.0.0 (#42241)

arrow 16.1.0

CRAN 發布:2024-05-25

新功能

  • 現在可以將串流寫入 socket 連線 (#38897)
  • Arrow R 套件現在可以使用舊版 Arrow C++ 程式庫 (回溯至 13.0.0) 建置 (#39738)

次要改進與修正

  • 資料集和表格輸出列印現在會截斷長度超過 20 個項目的結構描述 (#38916)
  • 修正最新 reticulate 的指標轉換為 Python 的問題,以確保資料可以在 Arrow 和 PyArrow 之間傳遞 (#39969)
  • 檢查 macOS 上是否正在使用 GNU libtool,並確保我們改用 macOS libtool (#40259)
  • 修正建立包含所有相依性的捆綁 tarball 在 Windows 上失敗的錯誤 (@hutch3232, #40232)

arrow 15.0.1

CRAN 發布:2024-03-12

新功能

  • 已新增 base::prod 的綁定,因此您現在可以在 dplyr 管道中使用它 (即,tbl |> summarize(prod(col))),而無需將資料提取到 R 中 (@m-muecke, #38601)。
  • Dataset 物件上呼叫 dimnamescolnames 現在會傳回有用的結果,而不僅僅是 NULL (#38377)。
  • Schema 物件上的 code() 方法現在接受選用的 namespace 引數,當 TRUE 時,會以 arrow:: 作為名稱前綴,使輸出更具可攜性 (@orgadish, #38144)。

次要改進與修正

  • 當 ARROW_OFFLINE_BUILD=true 時,不要下載 cmake,並更新 SystemRequirements (#39602)。
  • 如果二進位檔下載失敗,則優雅地回退到來源建置 (#39587)。
  • subgsubstringr::str_replacestringr::str_replace_allpattern 中傳遞長度 > 1 的值向量時,現在會擲回錯誤,而不是警告並將資料提取到 R 中 (@abfleishman, #39219)。
  • 遺失的文件已新增至 ?open_dataset,說明如何使用 arrow 13.0.0 中新增的 ND-JSON 支援 (@Divyansh200102, #38258)。
  • 為了在使用 arrow 與 AWS S3 (例如,s3_bucketS3FileSystem) 時更容易偵錯問題,可以使用 AWS_S3_LOG_LEVEL 環境變數設定 S3 的偵錯日誌層級。如需更多資訊,請參閱 ?S3FileSystem。 (#38267)
  • 使用 arrow 與 duckdb (即,to_duckdb()) 不再導致在結束 R 會話時發出警告。 (#38495)
  • 修正了大量次要拼字錯誤 (@jsoref, #38929, #38257)
  • 開發人員文件已更新以符合最近發布版本中的變更 (#38220)

arrow 14.0.2.1

CRAN 發布:2024-02-23

次要改進與修正

  • 從來源建置時檢查網際網路連線,並回退到最小範圍的 Arrow C++ 建置 (#39699)。
  • 預設在 macOS 上從來源建置,針對舊行為使用 LIBARROW_BINARY=true (#39861)。
  • 支援針對舊版 Arrow C++ 進行建置。目前這是選擇性加入 (ARROW_R_ALLOW_CPP_VERSION_MISMATCH=true),且至少需要 Arrow C++ 13.0.0 (#39739)。
  • 使其可以在 windows 上從 Rtools 使用 Arrow C++ (在未來的 Rtools 版本中)。 (#39986)。

arrow 14.0.2

次要改進與修正

  • 修正由隱含轉換引起的 C++ 編譯器警告 (#39138, #39186)。
  • 修正測試期間令人困惑的 dplyr 警告 (#39076)。
  • 新增遺失的 “-framework Security” pkg-config 旗標,以防止在使用嚴格連結器設定進行編譯時發生問題 (#38861)。

arrow 14.0.0.2

CRAN 發布:2023-12-02

次要改進與修正

  • 修正 printf 語法以符合格式檢查 (#38894)
  • 移除 configure 指令碼中的 bashism (#38716)。
  • 修正 README 中損壞的連結 (#38657)
  • 正確跳脫 lintr 設定中的授權標頭 (#38639)。
  • 移除安裝指令碼測試套件中的偽造警告 (#38571)。
  • 在重構後潤飾安裝指令碼 (#38534)

安裝

  • 如果 pkg-config 無法偵測到所需的程式庫,則會執行額外的不使用 pkg-config 的搜尋 (#38970)。
  • 安裝開發版本時,擷取最新的 nightly Arrow C++ 二進位檔 (#38236)。

arrow 14.0.0.1

CRAN 發布:2023-11-24

次要改進與修正

  • 為建置失敗新增更多偵錯輸出 (#38819)
  • 增加靜態程式庫下載期間的逾時 (#38767)
  • 修正 rosetta 偵測導致安裝失敗的錯誤 (#38754)

arrow 14.0.0

CRAN 發布:2023-11-16

新功能

次要改進與修正

  • CsvParseOptions 物件建立的文件現在包含更多關於預設值的資訊 (@angela-li, #37909)。
  • 修正了在配置失敗後可能導致從非 R 執行緒呼叫 R 程式碼的程式碼路徑 (#37565)。
  • 修正了無法從 R 連線讀取大型 Parquet 檔案的錯誤 (#37274)。
  • stringr 輔助函數 (例如,fixed()regex() 等) 的綁定現在允許在其引數中可靠地使用變數 (#36784)。
  • Thrift 字串和容器大小限制現在可以透過新公開的 ParquetReaderProperties 進行配置,允許使用者處理具有異常大型中繼資料的 Parquet 檔案 (#36992)。
  • 改進了使用 add_filename() 產生的錯誤訊息 (@amoeba, #37372)。

安裝

  • macOS 建置現在使用與 Linux 相同的安裝路徑 (@assignUser, #37684)。
  • 當在 macOS 上模擬執行 (即,在 M1/aarch64 上使用 x86 安裝的 R;#37777) 時,套件載入時現在會發出警告訊息。
  • 在配置和安裝期間執行的 R 指令碼現在使用正確的 R 直譯器執行 (@meztez, #37225)。
  • 失敗的 libarrow 建置現在傳回更詳細的輸出 (@amoeba, #37727)。
  • create_package_with_all_dependencies() 現在正確跳脫 Windows 上的路徑 (#37226)。

arrow 13.0.0.1

CRAN 發布:2023-09-22

  • 移除對舊版時區的參考,以防止 CRAN 檢查失敗 (#37671)

arrow 13.0.0

CRAN 發布:2023-08-30

重大變更

  • 僅從 data.frame 繼承且沒有其他類別的輸入物件現在已移除 class 屬性,導致現在從檔案讀取函數和 arrow_table() 始終傳回 tibble,這會導致傳回物件類型的一致性。在 Arrow 表格物件上呼叫 as.data.frame() 現在始終傳回 data.frame 物件 (#34775)

新功能

次要改進與修正

  • 便利函數 arrow_array() 可用於建立 Arrow 陣列 (#36381)
  • 便利函數 scalar() 可用於建立 Arrow 純量 (#36265)
  • 透過始終從主 R 執行緒從 DuckDB 呼叫 RecordBatchReader::ReadNext(),防止在 arrow 和 duckdb 之間傳遞資料時發生崩潰 (#36307)
  • 針對 set_io_thread_count() 發出警告,其中 num_threads < 2 (#36304)
  • 確保遺失的分組變數新增至變數列表的開頭 (#36305)
  • CSV 檔案讀取器選項類別物件可以列印選定的值 (#35955)
  • 結構描述中繼資料可以設定為具名字元向量 (#35954)
  • 確保 RStringViewer 輔助類別不擁有任何陣列參考 (#35812)
  • 如果 %z 是格式字串的一部分,則 arrow 中的 strptime() 將傳回時區感知時間戳記 (#35671)
  • 組合 group_by()across() 時的欄位排序現在與 dplyr 相符 (@eitsupi, #35473)

安裝

  • 使用 autobrew 時連結到正確版本的 OpenSSL (#36551)
  • 在捆綁建置指令碼中需要 cmake 3.16 (#36321)

文件

  • 拆分 R6 類別和便利函數以提高可讀性 (#36394)
  • 啟用 pkgdown 內建搜尋 (@eitsupi, #36374)
  • 重新組織 pkgdown 網站上的參考頁面以提高可讀性 (#36171)

arrow 12.0.1.1

CRAN 發布:2023-07-18

  • 更新套件版本參考,使其僅為文字而非數字,因為 CRAN 更新需要這樣做 (#36353, #36364)

arrow 12.0.1

CRAN 發布:2023-06-15

  • 更新與 Arrow C++ 程式庫一起供應的日期程式庫版本,以與 tzdb 0.4.0 相容 (#35594, #35612)。
  • 更新一些測試以與 waldo 0.5.1 相容 (#35131, #35308)。

arrow 12.0.0

CRAN 發布:2023-05-05

新功能

安裝

  • Ubuntu 18.04 和 20.04 的託管靜態 libarrow 二進位檔先前已在 Ubuntu 18.04 上建置,Ubuntu 18.04 將於 5 月停止接收 LTS 更新
    1. 這些二進位檔現在在 Centos 7 上建置 (#32292, #34048)。

次要改進與修正

  • 修正與最終確定 S3 檔案系統元件相關的程序結束時發生的崩潰 (#15054, #33858)。
  • 實作 Arrow C++ FetchNodeOrderByNode 以提高效能並簡化從 dplyr 表達式建置查詢計畫 (#34437, #34685)。
  • 修正了取決於 arrow_table() 中細微引數傳遞語義而寫入不同 R 中繼資料的錯誤 (#35038, #35039)。
  • 改進嘗試將具有 NULL 欄位名稱的 data.frame 轉換為 Table 時的錯誤訊息 (#15247, #34798)。
  • 範例小品已更新,以反映 open_csv_dataset() 系列函數的改進 (#33998, #34710)。
  • 修正了當 arrow ALTREP 向量被實例化並轉換回 arrow 陣列時發生的崩潰 (#34211, #34489)。
  • 改進 conda 安裝指示 (#32512, #34398)。
  • 改進文件 URL 配置 (@eitsupi, #34276)。
  • 更新遷移到 GitHub 的 JIRA 問題的連結 (@eitsupi, #33631, #34260)。
  • dplyr::n() 函數現在對應到 count_all 核心,以提高效能並簡化 R 實作 (#33892, #33917)。
  • 改進使用 s3_bucket() 檔案系統輔助函數與 endpoint_override 的體驗,並修正當傳遞某些引數組合時發生的令人驚訝的行為 (@cboettig, #33904, #34009)。
  • 如果在 open_csv_dataset() 中提供 schemacol_names = TRUE,則不會引發錯誤 (#34217, #34092)。

arrow 11.0.0.3

CRAN 發布:2023-03-08

次要改進與修正

  • open_csv_dataset() 允許指定結構描述。 (#34217)
  • 為了確保與即將發布的 dplyr 版本相容,我們不再呼叫 dplyr:::check_names() (#34369)

arrow 11.0.0.2

CRAN 發布:2023-02-12

重大變更

  • map_batches() 預設為延遲載入;除非 lazy = FALSE,否則現在傳回 RecordBatchReader 而非 RecordBatch 物件清單。 (#14521)

新功能

文件

  • 對許多範例小品和 README 進行了大量的重新組織、重寫和新增。 (@djnavarro, #14514)

讀取/寫入資料

dplyr 相容性

函數綁定

Arrow 物件建立

  • Arrow 純量可以從 POSIXlt 物件建立。 (#15277)
  • Array$create() 可以建立 Decimal 陣列。 (#15211)
  • StructArray$create() 可以用於建立 StructArray 物件。 (#14922)
  • 從大於 2^31 的物件建立陣列具有正確的長度 (#14929)

安裝

  • 使用預先下載的二進制檔案改進離線安裝。 (@pgramme, #14086)
  • 此套件可以自動連結到 AWS SDK for C++ 的系統安裝。 (@kou, #14235)

細微改進與修正

arrow 10.0.1

CRAN 發布:2022-12-06

細微改進與修正

  • 修復 lubridate 1.9 發布後測試失敗的問題 (#14615)
  • 更新以確保與 dev purrr 中的變更相容 (#14581)
  • 修復以正確處理 dplyr::group_by() 中的 .data 代名詞 (#14484)

arrow 10.0.0

CRAN 發布:2022-10-26

Arrow dplyr 查詢

多個新函數可用於查詢

此套件現在具有文件,列出 Arrow 資料上支援的所有 dplyr 方法和 R 函數對應,以及關於在 R 中評估的查詢與在 Acero(Arrow 查詢引擎)中評估的查詢之間的功能差異的注意事項。請參閱 ?acero

針對聯結實作了一些新功能和錯誤修正

  • 聯結現在支援擴展陣列,例如,允許聯結包含 geoarrow 資料的資料集。
  • 現在支援 keep 引數,允許在聯結輸出中為左側和右側聯結鍵使用不同的欄位。完整聯結現在會合併聯結鍵(當 keep = FALSE 時),避免在右側的列中,若在左側沒有任何符合項時,聯結鍵將全部為 NA 的問題。

一些變更旨在提高 API 的一致性

  • 在未來的版本中,預設情況下,呼叫 dplyr::pull() 將傳回 ?ChunkedArray 而非 R 向量。目前預設行為已被棄用。若要立即更新為新行為,請指定 pull(as_vector = FALSE) 或全域設定 options(arrow.pull_as_vector = FALSE)
  • 在分組的查詢上呼叫 dplyr::compute() 會傳回 ?Table 而非查詢物件。

最後,現在可以取消長時間執行的查詢,並將立即中止其計算。

陣列和表格

as_arrow_array() 現在可以接受 blob::blob?vctrs::list_of,分別轉換為二進制和列表陣列。此外,修正了當傳遞 StructArray 時,as_arrow_array() 忽略類型引數的問題。

unique() 函數適用於 ?Table?RecordBatch?Dataset?RecordBatchReader

讀取和寫入

write_feather() 可以接受 compression = FALSE 以選擇寫入未壓縮的檔案。

此外,write_dataset() 中 IPC 檔案的重大變更:將 "ipc""feather" 傳遞至 format 現在將寫入具有 .arrow 副檔名的檔案,而非 .ipc.feather

安裝

從 10.0.0 版開始,arrow 需要 C++17 才能建置。這表示

  • 在 Windows 上,您需要 R >= 4.0。9.0.0 版是最後一個支援 R 3.6 的版本。
  • 在 CentOS 7 上,您可以建置最新版本的 arrow,但您首先需要安裝比預設系統編譯器 gcc 4.8 更新的編譯器。請參閱 vignette("install", package = "arrow") 以取得指引。請注意,您只需要較新的編譯器來建置 arrow:安裝二進制套件(如從 RStudio Package Manager)或載入您已安裝的套件,使用系統預設值即可正常運作。

arrow 9.0.0

CRAN 發布:2022-08-10

Arrow dplyr 查詢

讀取和寫入

  • 新增了新函數 read_ipc_file()write_ipc_file()。這些函數幾乎與 read_feather()write_feather() 相同,但不同之處在於它們僅針對 IPC 檔案(Feather V2 檔案),而非 Feather V1 檔案。
  • 自 1.0.0 版(2020 年 7 月)起已棄用的 read_arrow()write_arrow() 已移除。請改為使用 read_ipc_file()write_ipc_file() 處理 IPC 檔案,或使用 read_ipc_stream()write_ipc_stream() 處理 IPC 流。 (#13550)
  • write_parquet() 現在預設寫入 Parquet 格式版本 2.4(原為 1.0)。先前已棄用的引數 propertiesarrow_properties 已移除;如果您需要直接處理這些較低層級的屬性物件,請使用 ParquetFileWriterwrite_parquet() 會包裝 ParquetFileWriter。 (#13555)
  • UnionDatasets 可以統一具有不同綱要的多個 InMemoryDatasets 的綱要。 (#13088)
  • write_dataset() 再次保留所有綱要元數據。在 8.0.0 版中,它會捨棄大多數元數據,從而破壞 sfarrow 等套件。 (#13105)
  • 讀取和寫入函數(例如 write_csv_arrow())將在檔案路徑包含壓縮副檔名(例如 "data.csv.gz")時自動(解)壓縮資料。這在本地以及 S3 和 GCS 等遠端檔案系統上都適用。 (#13183)
  • 可以將 FileSystemFactoryOptions 提供給 open_dataset(),讓您可以傳遞選項,例如要忽略哪些檔案前綴。 (#13171)
  • 預設情況下,S3FileSystem 不會建立或刪除儲存桶。若要啟用該功能,請傳遞組態選項 allow_bucket_creationallow_bucket_deletion。 (#13206)
  • GcsFileSystemgs_bucket() 允許連線至 Google Cloud Storage。 (#10999, #13601)

陣列和表格

  • Table 和 RecordBatch $num_rows() 方法傳回 double(先前為 integer),避免較大表格上的整數溢位。 (#13482, #13514)

封裝

  • R 套件和預先建置的 libarrow 二進制檔案的每夜建置的 arrow.dev_repo 現在是 https://nightlies.apache.org/arrow/r/
  • macOS 二進制檔案隨附 Brotli 和 BZ2。Windows 二進制檔案隨附 BZ2。 (#13484)

arrow 8.0.0

CRAN 發布:2022-05-09

dplyr 和資料集的增強功能

  • open_dataset():
    • 正確支援 skip 引數,以跳過 CSV 資料集中的標頭列。
    • 可以接受具有不同綱要的資料集列表,並嘗試統一綱要以產生 UnionDataset
  • Arrow dplyr 查詢
    • RecordBatchReader 上受到支援。例如,這允許將 DuckDB 的結果串流回 Arrow,而不是在繼續管線之前將其具體化。
    • 如果查詢包含聚合或聯結,則不再需要在寫入資料集之前具體化整個結果表格。
    • 支援 dplyr::rename_with()
    • dplyr::count() 傳回未分組的資料框架。
  • write_dataset() 在寫入分區資料集時,具有更多選項可控制列組和檔案大小,例如 max_open_filesmax_rows_per_filemin_rows_per_groupmax_rows_per_group
  • write_csv_arrow() 接受 Dataset 或 Arrow dplyr 查詢。
  • 聯結一個或多個資料集,同時 option(use_threads = FALSE) 不再使 R 崩潰。預設情況下,Windows 上會設定該選項。
  • dplyr 聯結支援 suffix 引數,以處理欄位名稱中的重疊。
  • 使用 is.na() 過濾 Parquet 資料集不再遺漏任何列。
  • map_batches() 正確接受 Dataset 物件。

日期和時間支援的增強功能

擴展性

  • 新增了 S3 通用轉換函數,例如 as_arrow_array()as_arrow_table(),用於主要的 Arrow 物件。這包括 Arrow 表格、記錄批次、陣列、分塊陣列、記錄批次讀取器、綱要和資料類型。這允許其他套件定義從其類型到 Arrow 物件的自訂轉換,包括擴展陣列。
  • 可以建立和註冊自訂 擴展類型和陣列,允許其他套件定義自己的陣列類型。擴展陣列包裝了規則的 Arrow 陣列類型,並提供自訂的行為和/或儲存。請參閱描述和 ?new_extension_type 的範例。
  • 為所有 vctrs::vec_is() 傳回 TRUE 的物件(即,任何可用作 tibble::tibble() 中欄位的物件)實作了通用擴展類型和 as_arrow_array() 方法,前提是底層的 vctrs::vec_data() 可以轉換為 Arrow 陣列。

串聯支援

可以輕鬆串聯 Arrow 陣列和表格

  • 可以使用 concat_arrays() 串聯陣列,或者,如果需要零複製且可接受分塊,則可以使用 ChunkedArray$create()
  • 可以使用 c() 串聯 ChunkedArrays。
  • RecordBatches 和 Tables 支援 cbind()
  • Tables 支援 rbind()。也提供了 concat_tables() 以串聯表格,同時統一綱要。

其他細微改進與修正

  • 字典陣列在轉換為 R 因子時支援使用 ALTREP。
  • 數學群組泛型是針對 ArrowDatum 實作的。這表示您可以將基礎函數(如 sqrt()log()exp())與 Arrow 陣列和純量搭配使用。
  • read_*write_* 函數支援 R 連線物件,以進行檔案的讀取和寫入。
  • Parquet 改進
    • Parquet 寫入器支援 Duration 類型欄位。
    • 資料集 Parquet 讀取器消耗較少的記憶體。
  • median()quantile() 將僅警告一次關於近似計算,無論互動性如何。
  • Array$cast() 可以將 StructArrays 轉換為另一個 struct 類型,該類型具有相同的欄位名稱和結構(或欄位的子集),但欄位類型不同。
  • 移除了 Solaris 的特殊處理。
  • CSV 寫入器在寫入字串欄位時速度更快。
  • 修正了 set_io_thread_count() 會設定 CPU 計數而非 IO 執行緒計數的問題。
  • RandomAccessFile 具有 $ReadMetadata() 方法,可提供檔案系統提供的實用元數據。
  • grepl 綁定針對 NA 輸入傳回 FALSE(先前傳回 NA),以符合 base::grepl() 的行為。
  • create_package_with_all_dependencies() 在 Windows 和 Mac OS 上運作,而非僅限 Linux。

arrow 7.0.0

CRAN 發布:2022-02-10

dplyr 和資料集的增強功能

  • 額外的 lubridate 功能:已實作 week()、更多 is.*() 函數和 month() 的 label 引數。
  • summarize() 內更複雜的表達式(例如 ifelse(n() > 1, mean(y), mean(z)))受到支援。
  • 在 dplyr 管線中新增欄位時,現在可以使用 tibbledata.frame 分別建立 tibble 或 data.frame 的欄位(例如 ... %>% mutate(df_col = tibble(a, b)) %>% ...)。
  • coalesce() 內部支援字典欄位(R factor 類型)。
  • open_dataset() 在讀取 Hive 樣式分區檔案時,即使不是必需的,也接受 partitioning 引數。
  • 已還原用於資料集自訂操作的實驗性 map_batches() 函數。

CSV

  • 現在可以讀取具有 UTF 以外編碼的分隔符號檔案(包括 CSV)(在讀取時使用 encoding 引數)。
  • open_dataset() 正確忽略 CSV 中的位元組順序記號 (BOM),這對於讀取單個檔案而言已經是事實
  • 讀取資料集在內部預設使用非同步掃描器,這解決了在讀取大型 CSV 資料集時的潛在死鎖。
  • head() 不再在大型 CSV 資料集上停止回應。
  • 當檔案中的標頭與作為引數提供的綱要/欄位名稱之間存在衝突時,會顯示改進的錯誤訊息。
  • write_csv_arrow() 現在遵循 readr::write_csv() 的簽名。

其他細微改進與修正

  • 許多使用說明文件都經過重新組織、重新架構和擴展,以提高其實用性和清晰度。
  • 可以使用 schematype 上的 $code() 方法存取產生綱要(和個別資料類型規範)的程式碼。這讓您可以輕鬆取得從已具有綱要的物件建立綱要所需的程式碼。
  • Arrow Duration 類型已對應到 R 的 difftime 類別。
  • 支援 decimal256() 類型。decimal() 函數已修訂為根據 precision 引數的值呼叫 decimal256()decimal128()
  • write_parquet() 使用對 chunk_size 的合理猜測,而非總是寫入單個區塊。這提高了讀取和寫入大型 Parquet 檔案的速度。
  • write_parquet() 不再捨棄分組 data.frames 的屬性。
  • 現在使用 ALTREP 支援分塊陣列。
  • 由 Arrow 陣列支援的 ALTREP 向量不再因排序或否定而意外地突變。
  • 可以使用 proxy_options 建立 S3 檔案系統。
  • 修正了建立 S3 檔案系統時的區段錯誤。
  • Arrow 中的整數除法更符合 R 的行為。

安裝

  • 預設情況下,原始碼建置現在使用 pkg-config 搜尋系統依賴項(例如 libz),並在存在時連結到它們。此新預設值將使在已安裝這些依賴項的系統上更快地從原始碼建置 Arrow。若要保留下載和建置所有依賴項的先前行為,請設定 ARROW_DEPENDENCY_SOURCE=BUNDLED
  • Linux 建置中預設啟用 Snappy 和 lz4 壓縮函式庫。這表示 Arrow 的預設建置(不設定任何環境變數)將能夠讀取和寫入 snappy 編碼的 Parquet 檔案。
  • Windows 二進制套件包含 brotli 壓縮支援。
  • Windows 上的 Arrow 建置可以找到本地建置的 libarrow 函式庫。
  • 此套件在 Raspberry Pi OS 上編譯和安裝。

底層變更

  • 用於在 R 和 Python 之間傳遞資料的指標已變得更可靠。已維護與舊版本 pyarrow 的向後相容性。
  • 已變更註冊新綁定以用於 dplyr 查詢的內部方法。請參閱關於編寫綁定的新使用說明文件,以取得關於其運作方式的更多資訊。
  • 不再支援 R 3.3。arrow 以遞移方式依賴的 glue 已放棄對它的支援。

arrow 6.0.1

CRAN 發布:2021-11-20

  • 現在的 Join 支援包含字典欄位,並且已修復多個崩潰問題
  • 當處理已篩選至 0 列的資料時,群組聚合不再崩潰
  • 在 dplyr 查詢中新增了 str_count() 的綁定
  • 解決了 AWS SDK for C++ 中的一個嚴重錯誤,該錯誤可能會影響 S3 多部分上傳
  • 已解決 round 核心中的 UBSAN 警告
  • 修復了在 Solaris 和舊版本 macOS 上的建置失敗問題

arrow 6.0.0

現在有兩種方法可以查詢 Arrow 資料

1. 擴展的 Arrow 原生查詢:聚合和 Join

dplyr::summarize(),無論是群組還是非群組,現在都已為 Arrow Datasets、Tables 和 RecordBatches 實作。由於資料是以區塊掃描,您可以對由多個檔案支援的大於記憶體的資料集進行聚合。支援的聚合函數包括 n()n_distinct()min()max()sum()mean()var()sd()any()all()median() 和帶有一個機率的 quantile() 也受到支援,目前使用 t-digest 演算法返回近似結果。

除了 summarize() 之外,您還可以呼叫 count()tally()distinct(),它們有效地包裝了 summarize()

此增強功能確實更改了在某些情況下 summarize()collect() 的行為:請參閱下面的「重大變更」以了解詳細資訊。

除了 summarize() 之外,Arrow 原生也支援帶有 mutating 和 filtering equality 的 Join(inner_join()left_join()right_join()full_join()semi_join()anti_join())。

在此版本中,群組聚合和(尤其是)Join 應被視為有些實驗性。我們預期它們可以運作,但對於所有工作負載,它們可能沒有得到很好的最佳化。為了幫助我們將精力集中在下一個版本中改進它們,如果您遇到意外行為或效能不佳的情況,請告知我們。

新的非聚合計算函數包括字串函數,例如 str_to_title()strftime(),以及用於提取日期部分(例如 year()month())的計算函數。 這不是額外計算函數的完整列表; 有關可用計算函數的完整列表,請參閱 list_compute_functions()

我們也致力於填補對所有資料類型的支援,例如 Decimal,對於先前版本中新增的函數。 先前版本說明中提及的所有類型限制應不再有效,如果您發現某個函數未針對特定資料類型實作,請回報問題

2. DuckDB 整合

如果您已安裝 duckdb 套件,您可以將 Arrow Dataset 或查詢物件交給 DuckDB,以使用 to_duckdb() 函數進行進一步查詢。 這允許您使用 duckdb 的 dbplyr 方法及其 SQL 介面來聚合資料。 在 to_duckdb() 之前完成的篩選和欄位投影在 Arrow 中評估,並且 duckdb 也可以將一些謂詞下推到 Arrow。 這種交接不會複製資料,而是使用 Arrow 的 C 介面(就像在 R 和 Python 之間傳遞 arrow 資料一樣)。 這表示不會產生序列化或資料複製成本。

您也可以取得 duckdb tbl 並呼叫 to_arrow() 以將資料串流到 Arrow 的查詢引擎。 這表示在單個 dplyr 管道中,您可以從 Arrow Dataset 開始,在 DuckDB 中評估一些步驟,然後在 Arrow 中評估其餘步驟。

重大變更

  • 來自 Dataset 查詢的資料列順序不再是確定性的。 如果您需要穩定的排序順序,則應明確地 arrange() 查詢結果。 對於 summarize() 的呼叫,您可以設定 options(arrow.summarise.sort = TRUE) 以符合目前 dplyr 在分組欄位上排序的行為。
  • 記憶體內 Arrow Table 或 RecordBatch 上的 dplyr::summarize() 不再急切評估。 呼叫 compute()collect() 以評估查詢。
  • head()tail() 也都不再急切評估,無論是對於記憶體內資料還是對於 Datasets。 此外,由於資料列順序不再是確定性的,除非您 arrange() 指定排序,否則它們實際上會從資料集中的某個位置給您一個隨機的資料切片。
  • Simple Feature (SF) 欄位在轉換為 Arrow 表格(以及因此儲存到 Parquet 或 Feather 時)不再儲存其所有中繼資料。 這也包括任何在每個元素上都有屬性的資料框架欄位(換句話說:列級中繼資料)。 我們先前儲存此中繼資料的方法在 Arrow 查詢 + 資料集方面既(計算上)效率低下且不可靠。 這將對儲存 SF 欄位產生最大的影響。 對於儲存這些欄位,我們建議將欄位轉換為眾所周知的二進位表示形式(使用 sf::st_as_binary(col))或使用 sfarrow 套件,該套件處理此轉換過程的一些複雜性。 我們計劃改進此功能並在未來重新啟用像這樣自訂的中繼資料,屆時我們可以以安全有效的方式實作儲存。 如果您需要保留儲存此中繼資料的 6.0.0 之前的行為,您可以設定 options(arrow.preserve_row_level_metadata = TRUE)。 我們將在即將發布的版本中移除此選項。 如果可能,我們強烈建議避免使用此變通方法,因為未來將不支援這些結果,並且可能會導致令人驚訝和不準確的結果。 如果您遇到除 sf 欄位之外的自訂類別受到此影響,請回報問題
  • Datasets 在 R < 4.0 (Rtools 3.5) 的 32 位元 Windows 上已正式不再支援。 32 位元 Windows 使用者應升級到較新版本的 R 才能使用 datasets。

在 Linux 上安裝

  • 如果 Arrow C++ 程式庫未編譯,則套件安裝現在會失敗。 在以前的版本中,如果 C++ 程式庫編譯失敗,您會得到一個成功的 R 套件安裝,但它不會執行太多有用的操作。
  • 您可以通過設定環境變數 LIBARROW_MINIMAL=true 在從原始碼建置時停用所有可選的 C++ 組件。 這將具有核心 Arrow/Feather 組件,但不包括 Parquet、Datasets、壓縮程式庫和其他可選功能。
  • 原始碼套件現在捆綁了 Arrow C++ 原始碼,因此不必下載即可建置套件。 由於包含原始碼,因此現在可以在離線/氣隙系統上建置套件。 預設情況下,離線建置將是最小化的,因為它無法下載支援所有功能所需的第三方 C++ 相依性。 為了允許功能完整的離線建置,包含的 create_package_with_all_dependencies() 函數(也可在 GitHub 上取得,無需安裝 arrow 套件)將下載所有第三方 C++ 相依性並將它們捆綁在 R 原始碼套件中。 在連接到網路的系統上執行此函數以產生「胖」原始碼套件,然後將該 .tar.gz 套件複製到您的離線機器並安裝。 特別感謝 @karldw 在這方面付出的巨大努力。
  • 原始碼建置可以通過設定 ARROW_DEPENDENCY_SOURCE=AUTO 來使用系統相依性(例如 libz)。 這不是此版本中的預設值(BUNDLED,即下載並建置所有相依性),但可能會在未來成為預設值。
  • JSON 程式庫組件(read_json_arrow())現在是可選的,並且預設情況下仍然開啟; 在建置之前設定 ARROW_JSON=OFF 以停用它們。

其他增強功能和修復

  • 更多 Arrow 資料類型在與 R 之間轉換時使用 ALTREP。 這顯著加快了一些工作流程,而對於其他工作流程,它僅延遲了從 Arrow 到 R 的轉換。 預設情況下使用 ALTREP,但要停用它,請設定 options(arrow.use_altrep = FALSE)
  • Field 物件現在可以建立為不可為空值,並且 schema() 現在可以選擇性地接受 Field 的列表
  • 數值除以零現在符合 R 的行為,並且不再引發錯誤
  • write_parquet() 與分組的 data.frame 一起使用時不再出錯
  • 如果 Arrow 中不支援表達式,case_when() 現在會明確地產生錯誤
  • open_dataset() 現在適用於沒有標頭列的 CSV
  • 修復了一個小問題,其中簡短的 readr 樣式類型 Ttread_csv_arrow() 中被反轉
  • log(..., base = b) 的綁定,其中 b 是 2、e 或 10 以外的任何值
  • 對我們的 vignette 進行了許多更新和擴展
  • 修復了將長度為 0 的 ChunkedArrays 轉換為 R 向量時的區段錯誤
  • Table$create() 現在具有別名 arrow_table()

內部

  • 我們現在使用 testthat 第 3 版作為預設值
  • 許多大型測試重新組織
  • 樣式變更以符合 tidyverse 樣式指南 + 使用 lintr

arrow 5.0.0.2

CRAN 發布:2021-09-05

此修補程式版本包含針對一些 sanitizer 和編譯器警告的修復。

arrow 5.0.0

CRAN 發布:2021-07-29

更多 dplyr

  • 現在有超過 250 個計算函數可用於 dplyr::filter()mutate() 等。 此版本中的新增功能包括

    • 字串運算:strsplit()str_split()strptime()paste()paste0()str_c()substr()str_sub()str_like()str_pad()stri_reverse()
    • 日期/時間運算:lubridate 方法,例如 year()month()wday()
    • 數學:對數 (log() et al.); 三角函數 (sin()cos() 等); abs()sign()pmin()pmax()ceiling()floor()trunc()
    • 條件函數,在此版本中對輸入類型有一些限制:ifelse()if_else() 用於除了 Decimal 類型以外的所有類型; case_when() 僅適用於邏輯、數值和時間類型; coalesce() 用於除了列表/結構以外的所有類型。 另請注意,在此版本中,因子/字典在這些函數中會轉換為字串。
    • 支援 is.* 函數,並且可以在 relocate() 內部使用
  • arrow_dplyr_query 的 print 方法現在包含表達式和由 mutate() 衍生的欄位的結果類型。

  • 如果傳遞參數 .keep.before.aftertransmute() 現在會產生錯誤,以與 dplyrdata.frame 上的行為保持一致。

CSV 寫入

  • write_csv_arrow() 使用 Arrow 將 data.frame 寫入單個 CSV 檔案
  • write_dataset(format = "csv", ...) 將 Dataset 寫入 CSV,包括使用分割

C 介面

  • 為其餘 C 資料介面新增了綁定:Type、Field 和 RecordBatchReader(來自實驗性 C 串流介面)。 這些也具有 reticulate::py_to_r()r_to_py() 方法。 隨著 Scanner$ToRecordBatchReader() 方法的加入,您現在可以在 R 中建立 Dataset 查詢,並將產生的批次串流傳遞到流程中的另一個工具。
  • C 介面方法在 Arrow 物件上公開(例如 Array$export_to_c()RecordBatch$import_from_c()),類似於它們在 pyarrow 中的方式。 這有助於它們在其他套件中的使用。 有關用法範例,請參閱 py_to_r()r_to_py() 方法。

其他增強功能

  • 將 R data.frame 轉換為 Arrow Table 在各個欄位之間使用多執行緒
  • 某些 Arrow 陣列類型在轉換為 R 時現在使用 ALTREP。 要停用此功能,請設定 options(arrow.use_altrep = FALSE)
  • is.na() 現在在浮點數欄位中的 NaN 值上評估為 TRUE,以與基本 R 保持一致。
  • is.nan() 現在在浮點數欄位中的 NA 值上評估為 FALSE,在非浮點數欄位中的所有值上評估為 FALSE,以與基本 R 保持一致。
  • ArrayChunkedArrayRecordBatchTable 的其他方法:na.omit() 和其友善函數、any()/all()
  • Scalar 輸入到 RecordBatch$create()Table$create() 會被回收
  • arrow_info() 包含有關 C++ 建置的詳細資訊,例如編譯器版本
  • 如果 x 不是 ScalarArrayChunkedArray,則 match_arrow() 現在會將 x 轉換為 Array,並且不再分派 base::match()
  • 列級中繼資料現在僅限於讀取/寫入單個 parquet 或 feather 檔案。 如果資料集包含列級中繼資料,則列級中繼資料會被忽略(並發出警告)。 寫入帶有列級中繼資料的資料集也會被忽略(並發出警告)。 我們正在開發更穩健的實作來支援列級中繼資料(和其他複雜類型)—敬請期待。 對於使用 {sf} 物件,{sfarrow} 有助於序列化 sf 欄位並將它們與 geopandas 共享。

arrow 4.0.1

CRAN 發布:2021-05-28

  • 解決了新的字串計算核心中的一些錯誤 (#10320, #10287)

arrow 4.0.0.1

CRAN 發布:2021-05-10

  • 當在 Linux 上使用套件的靜態原始碼建置時,mimalloc 記憶體分配器是預設記憶體分配器。 這是因為它在 valgrind 下比 jemalloc 具有更好的行為。 功能完整的建置(使用 LIBARROW_MINIMAL=false 安裝)包括 jemalloc 和 mimalloc,並且它仍然將 jemalloc 作為預設值,儘管這可以使用 ARROW_DEFAULT_MEMORY_POOL 環境變數在運行時配置。
  • 環境變數 LIBARROW_MINIMALLIBARROW_DOWNLOADNOT_CRAN 現在在 Linux 建置腳本中不區分大小寫。
  • macOS 二進位套件中的建置配置問題已解決。

arrow 4.0.0

CRAN 發布:2021-04-27

dplyr 方法

Arrow 物件上支援更多 dplyr 動詞

  • 現在在 Arrow 中支援許多應用程式的 dplyr::mutate()。 對於 Arrow 中尚不支援的 TableRecordBatch 上的查詢,實作會像先前版本一樣,首先回退到將資料提取到記憶體內 R data.frame。 對於 Dataset(可能大於記憶體)上的查詢,如果未實作該函數,則會引發錯誤。 無法在 Arrow 物件上呼叫的主要 mutate() 功能是 (1) mutate()group_by() 之後(通常與聚合結合使用)和 (2) 使用 dplyr::across() 的查詢。
  • dplyr::transmute()(呼叫 mutate()
  • dplyr::group_by() 現在保留 .drop 參數,並支援即時定義欄位
  • dplyr::relocate() 重新排序欄位
  • dplyr::arrange() 排序資料列
  • dplyr::compute() 評估延遲表達式並返回 Arrow Table。 這等效於 dplyr::collect(as_data_frame = FALSE),後者是在 2.0.0 中新增的。

現在可以在 dplyr 動詞內部對 Arrow 物件呼叫超過 100 個函數

  • 字串函數 nchar()tolower()toupper(),以及它們的 stringr 拼寫 str_length()str_to_lower()str_to_upper(),在 Arrow dplyr 呼叫中受到支援。 也支援 str_trim()
  • 正規表示式函數 sub()gsub()grepl(),以及 str_replace()str_replace_all()str_detect() 受到支援。
  • cast(x, type)dictionary_encode() 允許變更 Arrow 物件中欄位的類型; as.numeric()as.character() 等被公開為類似的類型變更便利功能
  • dplyr::between(); Arrow 版本也允許 leftright 參數成為資料中的欄位,而不僅僅是純量
  • 此外,任何 Arrow C++ 計算函數都可以在 dplyr 動詞內部呼叫。 這使您可以存取沒有直接 R 映射的 Arrow 函數。 有關所有可用函數,請參閱 list_compute_functions(),這些函數在 dplyr 中以 arrow_ 為前綴提供。
  • Arrow C++ 計算函數在針對具有不同類型(例如 int32 和 float64)的資料呼叫時,現在會執行更系統的類型提升。 以前,表達式中的 Scalars 始終被轉換為與相應 Array 的類型匹配,因此這種新的類型提升啟用了對資料集中兩個欄位 (Arrays) 的運算等功能。 作為副作用,不再支援在先前版本中有效的一些比較:例如,dplyr::filter(arrow_dataset, string_column == 3) 將產生錯誤,並顯示關於數值 3string_column 的字串類型之間類型不符的訊息。

Datasets

  • open_dataset() 現在接受檔案路徑向量(甚至單個檔案路徑)。 除此之外,這使您可以開啟單個非常大的檔案並使用 write_dataset() 來分割它,而無需將整個檔案讀取到記憶體中。
  • Datasets 現在可以偵測和讀取壓縮 CSV 的目錄
  • write_dataset() 現在預設為 format = "parquet",並且更好地驗證 format 參數
  • 現在可以正確處理 open_dataset()schema 的無效輸入
  • 從 Dataset 收集 0 個欄位現在不再返回所有欄位
  • Scanner$Scan() 方法已移除; 請使用 Scanner$ScanBatches()

其他改進

  • value_counts() 用於製表 ArrayChunkedArray 中的值,類似於 base::table()
  • StructArray 物件獲得類似 data.frame 的方法,包括 names()$[[dim()
  • 現在可以通過使用 $[[ 賦值 (<-) 來新增、取代或移除 RecordBatch 欄位
  • 同樣地,現在可以通過在其中賦值新類型來編輯 Schema。 這使得可以使用 CSV 讀取器偵測檔案的 schema,修改您想要以不同類型讀取的任何欄位的 Schema 物件,然後使用該 Schema 讀取資料。
  • 在建立具有 schema、具有不同長度的欄位以及具有純量值回收的 Table 時,進行了更好的驗證
  • 在 Windows 上的日語或其他多位元組地區設定中讀取 Parquet 檔案不再掛起(針對 libstdc++ 中的錯誤 的變通方法;感謝 @yutannihilation 在發現此問題時的堅持!)
  • 如果您嘗試讀取具有嵌入 nul (\0) 字元的字串資料,則錯誤訊息現在會通知您可以設定 options(arrow.skip_nul = TRUE) 以將它們剝離。 不建議預設設定此選項,因為此程式碼路徑明顯較慢,並且大多數字串資料不包含 nul。
  • read_json_arrow() 現在接受 schema:read_json_arrow("file.json", schema = schema(col_a = float64(), col_b = string()))

安裝和配置

  • R 套件現在可以支援使用已停用其他功能(例如 dataset、parquet、字串程式庫)的 Arrow C++ 程式庫,並且捆綁的建置腳本允許設定環境變數以停用它們。 有關詳細資訊,請參閱 vignette("install", package = "arrow")。 這允許在有用的情況下更快、更小的套件建置,並且它可以在 Solaris 上啟用最小、可運作的 R 套件建置。
  • 在 macOS 上,現在可以通過設定環境變數 FORCE_BUNDLED_BUILD=true 來使用與 Linux 上預設使用的相同的捆綁 C++ 建置,以及其所有自訂參數。
  • 如果可用(就像在 CRAN 二進位檔案中一樣),arrow 現在在 macOS 上預設使用 mimalloc 記憶體分配器,而不是 jemallocjemalloc 在 macOS 上存在 配置問題,並且 基準分析 顯示這對效能產生負面影響,尤其是在記憶體密集型工作流程中。 jemalloc 仍然是 Linux 上的預設值; mimalloc 是 Windows 上的預設值。
  • 當 Arrow C++ 程式庫已靜態連結時(通常是從 CRAN 安裝的情況),設定 ARROW_DEFAULT_MEMORY_POOL 環境變數以切換記憶體分配器現在可以正常運作。
  • arrow_info() 函數現在報告其他可選功能,以及偵測到的 SIMD 等級。 如果在建置中未啟用關鍵功能或壓縮程式庫,arrow_info() 將參考安裝 vignette,以指導如何安裝更完整的建置(如果需要)。
  • 如果您嘗試讀取使用您的 Arrow 建置不支援的編解碼器壓縮的檔案,則錯誤訊息現在會告訴您如何重新安裝 Arrow 並啟用該功能。
  • 關於開發人員環境設定的新 vignette vignette("developing", package = "arrow")
  • 從原始碼建置時,您可以使用環境變數 ARROW_HOME 指向 Arrow 程式庫的特定目錄。 這類似於傳遞 INCLUDE_DIRLIB_DIR

arrow 3.0.0

CRAN 發布:2021-01-27

Python 和 Flight

  • Flight 方法 flight_get()flight_put()(在此版本中從 push_data() 重新命名)可以處理 Tables 和 RecordBatches
  • flight_put() 獲得一個 overwrite 參數,以選擇性地檢查是否存在具有相同名稱的資源
  • list_flights()flight_path_exists() 讓您能夠查看 Flight 伺服器上的可用資源
  • Schema 物件現在具有 r_to_pypy_to_r 方法
  • 將表格轉換為/從 Python 轉換時,Schema metadata 會正確保留

增強功能

  • 算術運算 (+* 等) 在 Arrays 和 ChunkedArrays 上受到支援,並且可以用於 Arrow dplyr 管線中的篩選運算式
  • 現在可以透過使用 $[[ 賦值 (<-) 來新增、取代或移除表格欄位
  • 表格和 RecordBatch 的欄位名稱可以透過賦值 names() 來重新命名
  • 大型字串類型現在可以寫入 Parquet 檔案
  • rlang 代名詞 .data.env 現在在 Arrow dplyr 管線中完全受到支援。
  • 選項 arrow.skip_nul (預設為 FALSE,如同 base::scan()) 允許轉換包含嵌入 nul \0 字元的 Arrow 字串 (utf8()) 類型資料至 R。如果設定為 TRUE,則會移除 nul 字元,並且在找到任何 nul 字元時發出警告。
  • arrow_info() 提供各種執行階段和建置階段 Arrow 設定的概觀,對於偵錯很有用
  • 在載入 Arrow 套件之前,設定環境變數 ARROW_DEFAULT_MEMORY_POOL 以變更記憶體配置器。Windows 套件是使用 mimalloc 建置的;大多數其他套件都是使用 jemalloc (預設使用) 和 mimalloc 建置的。這些替代記憶體配置器通常比系統記憶體配置器快得多,因此在可用時預設會使用它們,但有時為了偵錯目的而關閉它們會很有用。若要停用它們,請設定 ARROW_DEFAULT_MEMORY_POOL=system
  • 在建立 Arrow 表格時,現在也會包含每個元素上都有屬性的 List 欄位以及儲存的中繼資料。這允許 sf tibbles 能夠忠實地保存和往返 (#8549)。
  • 超過 100Kb 的 R 中繼資料現在會在寫入表格之前壓縮;請參閱 schema() 以取得更多詳細資訊。

錯誤修正

  • 修正了在 2.0.0 版本中將 Arrow 字串類型轉換為 R 時的效能衰退問題
  • C++ 函數現在會在需要時觸發垃圾回收
  • write_parquet() 現在可以寫入 RecordBatches
  • 從包含 0 個批次的 RecordBatchStreamReader 讀取表格不再崩潰
  • 轉換為 Arrow RecordBatch 和表格時,會移除 readrproblems 屬性,以防止大量中繼資料意外累積 (#9092)
  • 修正了讀取使用 Arrow 0.17 寫入的壓縮 Feather 檔案的問題 (#9128)
  • SubTreeFileSystem 獲得了有用的 print 方法,並且在列印時不再出錯

封裝和安裝

  • conda r-arrow 套件的 Nightly 開發版本可透過 conda install -c arrow-nightlies -c conda-forge --strict-channel-priority r-arrow 取得
  • Linux 安裝現在安全地支援較舊的 cmake 版本
  • 用於啟用 S3 支援的編譯器版本檢查會正確識別作用中的編譯器
  • 更新了 vignette("install", package = "arrow") 中的指南和疑難排解,特別是針對已知的 CentOS 問題
  • Linux 上的作業系統偵測使用 distro 套件。如果您的作業系統未正確識別,請在那裡回報問題。

arrow 2.0.0

CRAN 發行版本:2020-10-20

資料集

  • write_dataset() 可用於寫入具有分割的 Feather 或 Parquet 檔案。請參閱 vignette("dataset", package = "arrow") 結尾以取得討論和範例。
  • 資料集現在具有 head()tail() 和 take ([) 方法。head() 已最佳化,但其他方法可能效能不佳。
  • collect() 獲得了 as_data_frame 引數,預設為 TRUE,但當 FALSE 時,允許您評估累積的 selectfilter 查詢,但將結果保留在 Arrow 中,而不是 R data.frame
  • read_csv_arrow() 支援指定欄位類型,包括使用 Schema 和用於 readr 套件中類型的精簡字串表示法。它還獲得了 timestamp_parsers 引數,可讓您表達一組 strptime 解析字串,這些字串將嘗試轉換指定為 Timestamp 類型的欄位。

AWS S3 支援

  • S3 支援現在已在二進位 macOS 和 Windows (僅限 Rtools40,即 R >= 4.0) 套件中啟用。若要在 Linux 上啟用它,您需要額外的系統相依性 libcurlopenssl,以及足夠現代的編譯器。請參閱 vignette("install", package = "arrow") 以取得詳細資訊。
  • 檔案讀取器和寫入器 (read_parquet()write_feather() 等),以及 open_dataset()write_dataset(),允許您透過提供 s3:// URI 或提供 FileSystem$path() 來存取 S3 (或模擬 S3 的檔案系統) 上的資源。請參閱 vignette("fs", package = "arrow") 以取得範例。
  • copy_files() 允許您以遞迴方式將檔案目錄從一個檔案系統複製到另一個檔案系統,例如從 S3 複製到本機電腦。

Flight RPC

Flight 是一個通用型用戶端-伺服器框架,用於透過網路介面高效能傳輸大型資料集。arrow R 套件現在提供用於連接 Flight RPC 伺服器以傳送和接收資料的方法。請參閱 vignette("flight", package = "arrow") 以取得概觀。

計算

  • 比較 (==> 等) 和布林 (&|!) 運算,以及 is.na%in%match (稱為 match_arrow()),現在已在 C++ 程式庫中針對 Arrow Arrays 和 ChunkedArrays 實作。
  • 聚合方法 min()max()unique() 已針對 Arrays 和 ChunkedArrays 實作。
  • Arrow 表格和 RecordBatch 上的 dplyr 篩選運算式現在在 C++ 程式庫中評估,而不是透過將資料提取到 R 中並評估來完成。這產生了顯著的效能提升。
  • 現在支援 Table/RecordBatch 上 dplyr 查詢的 dim() (nrow)

封裝和安裝

  • arrow 現在依賴 cpp11,這帶來更穩健的 UTF-8 處理和更快的編譯速度
  • Linux 建置腳本現在可以在較舊版本的 R 上成功執行
  • macOS 二進位套件現在隨附已啟用 zstandard 壓縮功能

錯誤修正和其他增強功能

  • 當所有值都適合 R 32 位元整數時,Arrow Int64 類型的自動轉換現在可以正確檢查 ChunkedArray 中的所有區塊,並且可以停用此轉換 (以便 Int64 始終產生 bit64::integer64 向量),方法是設定 options(arrow.int64_downcast = FALSE)
  • 除了在 1.0.0 中新增的往返中保留的 data.frame 欄位中繼資料之外,現在 data.frame 本身的屬性也會保留在 Arrow schema 中繼資料中。
  • 檔案寫入器現在會遵循系統 umask 設定
  • ParquetFileReader 具有其他方法,可用於從檔案存取個別欄位或列群組
  • 修正了各種區段錯誤:ParquetFileWriter 中的無效輸入;來自已儲存 R 物件的無效 ArrowObject 指標;將深度巢狀結構從 Arrow 轉換為 R
  • write_parquet()propertiesarrow_properties 引數已棄用

arrow 1.0.1

CRAN 發行版本:2020-08-28

錯誤修正

  • 使用 %in% 運算式篩選具有多個分割索引鍵的資料集現在可以忠實地傳回所有相關的列
  • 資料集現在可以在根目錄中具有以 ._ 開頭的路徑區段;以這些前置字元開頭的檔案和子目錄仍然會被忽略
  • open_dataset("~/path") 現在可以正確展開路徑
  • write_parquet()version 選項現在已正確實作
  • 已修正 parquet-cpp 程式庫中的 UBSAN 失敗
  • 對於捆綁的 Linux 建置,尋找 cmake 的邏輯更加穩健,您現在可以透過設定 CMAKE 環境變數來指定 /path/to/cmake

arrow 1.0.0

CRAN 發行版本:2020-07-25

Arrow 格式轉換

  • vignette("arrow", package = "arrow") 包含表格,說明 R 類型如何轉換為 Arrow 類型,反之亦然。
  • 新增了對轉換為/從更多 Arrow 類型的支援:uint64binaryfixed_size_binarylarge_binarylarge_utf8large_listlist of structs
  • 超過 2GB 的 character 向量會轉換為 Arrow large_utf8 類型
  • POSIXlt 物件現在可以轉換為 Arrow (struct)
  • R attributes() 在轉換為 Arrow RecordBatch 和表格時會保留在 Arrow 中繼資料中,並在從 Arrow 轉換時還原。這表示自訂子類別 (例如 haven::labelled) 會在透過 Arrow 的往返中保留。
  • Schema 中繼資料現在公開為具名列表,並且可以透過賦值來修改,例如 batch$metadata$new_key <- "new value"
  • 如果所有值都符合範圍,Arrow 類型 int64uint32uint64 現在會轉換為 R integer
  • Arrow date32 現在使用 double 底層儲存轉換為 R Date。即使資料值本身是整數,這也能提供更嚴格的往返保真度
  • 在轉換為 R factor 時,沒有相同字典的 dictionary ChunkedArrays 會正確地統一
  • 在 1.0 版本中,Arrow IPC 中繼資料版本從 V4 增加到 V5。預設情況下,RecordBatch{File,Stream}Writer 將寫入 V5,但您可以指定替代的 metadata_version。為了方便起見,如果您知道您要寫入的使用者無法讀取 V5,您可以設定環境變數 ARROW_PRE_1_0_METADATA_VERSION=1 以寫入 V4,而無需變更任何其他程式碼。

資料集

  • 現在支援 CSV 和其他文字分隔資料集
  • 使用自訂 C++ 建置,可以透過傳遞類似 ds <- open_dataset("s3://...") 的 URL,直接在 S3 上讀取資料集。請注意,這目前需要具有額外相依性的特殊 C++ 程式庫建置 - 這在 CRAN 發行版本或 Nightly 套件中尚不可用。
  • 在讀取個別 CSV 和 JSON 檔案時,會從檔案副檔名自動偵測壓縮

其他增強功能

  • C++ 聚合方法的初始支援:已針對 ArrayChunkedArray 實作 sum()mean()
  • 表格和 RecordBatch 具有其他類似 data.frame 的方法,包括 dimnames()as.list()
  • 表格和 ChunkedArrays 現在可以透過 reticulate 移至/從 Python 移出

錯誤修正和棄用

  • 在傳遞至 Arrow 記憶體時,非 UTF-8 字串 (在 Windows 上常見) 會正確強制轉換為 UTF-8,並在轉換為 R 時適當地重新本地化
  • write_parquet()coerce_timestamps 選項現在已正確實作。
  • 如果使用者提供,建立 Dictionary array 會尊重 type 定義
  • read_arrowwrite_arrow 現在已棄用;請根據您處理的是 Arrow IPC 檔案或串流格式,分別使用 read/write_feather()read/write_ipc_stream() 函數。
  • 先前已棄用的 FileStatsread_record_batchread_table 已移除。

安裝和封裝

  • 為了改善記憶體配置的效能,macOS 和 Linux 二進位檔現在已包含 jemalloc,而 Windows 套件則使用 mimalloc
  • Linux 安裝:針對二進位檔的作業系統偵測進行了一些調整,並在 Vignette 中更新了一些已知的安裝問題
  • 捆綁的 libarrow 是使用 R 使用的相同 CCCXX 值建置的
  • 建置捆綁的 libarrow 失敗會產生明確的訊息
  • 各種簡化工作,以減少程式庫大小和編譯時間

arrow 0.17.1

CRAN 發行版本:2020-05-19

  • 更新以與 dplyr 1.0 相容
  • reticulate::r_to_py() 轉換現在可以自動正確運作,而無需自行呼叫方法
  • C++ 程式庫中圍繞 Parquet 讀取的各種錯誤修正

arrow 0.17.0

CRAN 發行版本:2020-04-21

Feather v2

此版本包含對 Feather 檔案格式第 2 版的支援。Feather v2 具有對所有 Arrow 資料類型的完整支援,修正了大量字串資料的每個欄位 2GB 限制,並且允許使用 lz4zstd 壓縮檔案。write_feather() 可以寫入第 2 版或 第 1 版 Feather 檔案,而 read_feather() 會自動偵測它正在讀取的檔案版本。

與此變更相關的是,已重新設計多個圍繞讀取和寫入資料的函數。已新增 read_ipc_stream()write_ipc_stream(),以方便將資料寫入 Arrow IPC 串流格式,這與 IPC 檔案格式略有不同 (Feather v2 IPC 檔案格式)。

行為已標準化:所有 read_<format>() 都會傳回 R data.frame (預設值) 或 Table (如果引數 as_data_frame = FALSE);所有 write_<format>() 函數都會以不可見的方式傳回資料物件。為了方便某些工作流程,新增了一個特殊的 write_to_raw() 函數來包裝 write_ipc_stream() 並傳回包含已寫入緩衝區的 raw 向量。

為了實現此標準化,已棄用 read_table()read_record_batch()read_arrow()write_arrow()

Python 互通性

0.17 Apache Arrow 版本包含 C 資料介面,可讓您在 C 層級的處理程序中交換 Arrow 資料,而無需複製,且程式庫之間彼此沒有建置或執行階段相依性。這讓我們能夠使用 reticulate 在 R 和 Python (pyarrow) 之間有效率地共用資料。

請參閱 vignette("python", package = "arrow") 以取得詳細資訊。

資料集

  • 資料集讀取受益於 C++ 程式庫中的許多加速和修正
  • 資料集具有 dim() 方法,該方法會將所有檔案中的列加總 (#6635, @boshek)
  • 使用 c() 方法將多個資料集合併到單一可查詢的 UnionDataset
  • 資料集篩選現在將 NA 視為 FALSE,與 dplyr::filter() 一致
  • 現在所有 Arrow 日期/時間/時間戳記欄位類型都正確支援資料集篩選
  • vignette("dataset", package = "arrow") 現在具有正確、可執行的程式碼

安裝

  • Linux 上的安裝現在預設從原始碼建置 C++ 程式庫,並停用了一些壓縮程式庫。為了獲得更快、更豐富的建置,請設定環境變數 NOT_CRAN=true。請參閱 vignette("install", package = "arrow") 以取得詳細資訊和更多選項。
  • 原始碼安裝在更多 Linux 發行版本上更快且更可靠。

其他錯誤修正和增強功能

  • unify_schemas() 建立包含多個 schema 中欄位聯集的 Schema
  • 時區在 R 和 Arrow 之間的往返中忠實地保留
  • read_feather() 和其他讀取器函數會關閉它們開啟的任何檔案連線
  • 當也載入 R.oo 套件時,Arrow R6 物件不再發生命名空間衝突
  • FileStats 已重新命名為 FileInfo,且原始拼字已棄用

arrow 0.16.0.2

CRAN 發行版本:2020-02-14

  • install_arrow() 現在安裝 arrow 的最新版本,包括 Linux 相依性,適用於 CRAN 發行版本或開發建置 (如果 nightly = TRUE)
  • 除非設定 LIBARROW_DOWNLOADNOT_CRAN 環境變數,否則 Linux 上的套件安裝不再下載 C++ 相依性
  • write_feather()write_arrow()write_parquet() 現在傳回其輸入,類似於 readr 套件中的 write_* 函數 (#6387, @boshek)
  • 現在可以推斷 R list 的類型,並在所有 list 元素都是相同類型時建立 ListArray (#6275, @michaelchirico)

arrow 0.16.0

CRAN 發行版本:2020-02-09

多檔案資料集

此版本包含 Arrow 資料集的 dplyr 介面,可讓您有效率地將大型多檔案資料集作為單一實體使用。使用 open_dataset() 探索資料檔案目錄,然後使用 dplyr 方法來 select()filter() 等。工作將在 Arrow 記憶體中盡可能完成。必要時,資料會提取到 R 中以進行進一步計算。如果您有可用的 dplyr,則會有條件地載入 dplyr 方法;它不是硬性相依性。

請參閱 vignette("dataset", package = "arrow") 以取得詳細資訊。

Linux 安裝

從原始碼套件安裝 (如從 CRAN 安裝) 現在將自動處理其 C++ 相依性。對於常見的 Linux 發行版本和版本,安裝將檢索預先建置的靜態 C++ 程式庫以包含在套件中;如果此二進位檔不可用,則套件會執行一個捆綁的腳本,該腳本應該建置 Arrow C++ 程式庫,而除了 R 需要的系統相依性之外,沒有其他系統相依性。

請參閱 vignette("install", package = "arrow") 以取得詳細資訊。

資料探索

  • TableRecordBatch 也具有 dplyr 方法。
  • 為了在沒有 dplyr 的情況下進行探索,表格、RecordBatch、Arrays 和 ChunkedArrays 的 [ 方法現在支援自然列提取運算。這些方法使用 C++ FilterSliceTake 方法進行有效率的存取,具體取決於選取向量的類型。
  • 也新增了一個實驗性的延遲評估 array_expression 類別,除其他外,它能夠使用 Arrays 的某些函數來篩選表格,例如 arrow_table[arrow_table$var1 > 5, ],而無需先將所有內容提取到 R 中。

壓縮

  • write_parquet() 現在支援壓縮
  • codec_is_available() 傳回 TRUEFALSE,表示 Arrow C++ 程式庫是否建置為支援給定的壓縮程式庫 (例如 gzip、lz4、snappy)
  • Windows 建置現在包含對 zstd 和 lz4 壓縮的支援 (#5814, @gnguy)

其他修正和改進

  • 現在支援 Arrow null 類型
  • Factor 類型現在在透過 Parquet 格式的往返中保留 (#6135, @yutannihilation)
  • 讀取 Arrow 字典類型會強制將字典值轉換為 character (因為 R factor 層級需要為字元),而不是引發錯誤
  • 對 Parquet 函數文件進行了許多改進 (@karldw, @khughitt)

arrow 0.15.1

CRAN 發行版本:2019-11-04

  • 此修補程式版本包含 C++ 程式庫中圍繞字典類型和 Parquet 讀取的錯誤修正。

arrow 0.15.0

CRAN 發行版本:2019-10-07

重大變更

  • 現在已記錄和匯出包裝 C++ 類別的 R6 類別,並且已重新命名為更符合 R 的風格。此套件中高階 R 介面的使用者不受影響。想要更直接地與 Arrow C++ API 互動的使用者應該使用這些物件和方法。作為此變更的一部分,許多實例化這些 R6 物件的函數已被移除,取而代之的是 Class$create() 方法。值得注意的是,arrow::array()arrow::table() 已移除,取而代之的是 Array$create()Table$create(),消除了有關遮罩 base 函數的套件啟動訊息。如需更多資訊,請參閱新的 vignette("arrow")
  • 由於 Arrow 訊息格式的細微變更,0.15 版本程式庫寫入的資料可能無法由較舊版本讀取。如果您需要將資料傳送到使用較舊版本 Arrow 的處理程序 (例如,尚未更新到 Arrow 0.15 的 Apache Spark 伺服器),您可以設定環境變數 ARROW_PRE_0_15_IPC_FORMAT=1
  • read_*() 函數中的 as_tibble 引數已重新命名為 as_data_frame (#5399, @jameslamb)
  • arrow::Column 類別已移除,因為它已從 C++ 程式庫中移除

新功能

  • TableRecordBatch 物件具有 S3 方法,可讓您更像 data.frame 一樣使用它們。提取欄位、子集等等。請參閱 ?Table?RecordBatch 以取得範例。
  • C++ 檔案系統 API 的綁定初始實作。 (#5223)
  • Windows 上現在支援壓縮串流 (#5329),您也可以指定壓縮層級 (#5450)

其他升級

  • 由於 Arrow C++ 程式庫的改進,Parquet 檔案讀取速度更快。
  • read_csv_arrow() 支援更多剖析選項,包括 col_namesnaquoted_naskip
  • read_parquet()read_feather() 可以從 raw 向量攝取資料 (#5141)
  • 檔案讀取器現在可以正確處理需要展開的路徑,例如 ~/file.parquet (#5169)
  • 改進了在 schema 中建立類型的支援:類型的列印名稱 (例如 "double") 保證在實例化 schema (例如 double()) 時有效使用,並且可以使用人類友善的解析度字串 ("ms"、"s" 等) 建立時間類型。 (#5198, #5201)

arrow 0.14.1

CRAN 發行版本:2019-08-05

arrow 套件的初始 CRAN 發行版本。主要功能包括

  • 對各種檔案格式的讀取和寫入支援,包括 Parquet、Feather/Arrow、CSV 和 JSON。
  • Arrow 資料類型和物件的 C++ 程式庫 API 綁定,以及 Arrow 類型和 R 資料類型之間的對應。
  • 用於協助 C++ 程式庫組態和安裝的工具。