如何在不使用spark软件包的情况下读取R中的拼花地板文件?

如何在不使用spark软件包的情况下读取R中的拼花地板文件?,r,parquet,R,Parquet,通过使用SparkyR或使用不同的spark软件包,我可以在网上找到许多答案,这实际上需要旋转一个spark群集,这是一种开销。在python中,我可以使用“pandas.read_parquet”或python中的Apache arrow找到一种方法来实现这一点——我正在寻找类似的方法。使用Networkite,您可以使用python中的pandas来读取拼花文件。这可以为您节省运行spark实例的麻烦。在apache arrow发布其版本之前,可能会失去序列化性能。如上所述 library(

通过使用SparkyR或使用不同的spark软件包,我可以在网上找到许多答案,这实际上需要旋转一个spark群集,这是一种开销。在python中,我可以使用“pandas.read_parquet”或python中的Apache arrow找到一种方法来实现这一点——我正在寻找类似的方法。

使用Networkite,您可以使用python中的pandas来读取拼花文件。这可以为您节省运行spark实例的麻烦。在apache arrow发布其版本之前,可能会失去序列化性能。如上所述

library(reticulate)
library(dplyr)
pandas <- import("pandas")
read_parquet <- function(path, columns = NULL) {

  path <- path.expand(path)
  path <- normalizePath(path)

  if (!is.null(columns)) columns = as.list(columns)

  xdf <- pandas$read_parquet(path, columns = columns)

  xdf <- as.data.frame(xdf, stringsAsFactors = FALSE)

  dplyr::tbl_df(xdf)

}

read_parquet(PATH_TO_PARQUET_FILE)
库(网状)
图书馆(dplyr)

熊猫您可以简单地使用arrow软件包:

install.packages("arrow")
library(arrow)
read_parquet("myfile.parquet")

您将来也可以使用ApacheArrow来实现这一点。有一个pull请求为其构建R绑定:使用它们,您应该能够在R中加载拼花地板文件,而无需spark。@xhochy听起来很棒。但除此之外,你认为我们现在还有什么可以使用的吗?我在R中使用了网状包来利用python read_拼花地板。它实际上工作得非常好,读取文件的速度非常快。唯一的问题是,将其从pandas数据帧转换为r数据帧需要10倍多的时间。因此,最后,我只能在性能不是问题的情况下推荐这种方法。如果这是一个问题(例如,从s3加载时),那么额外的好处是文件非常小。很难理解,R在这里落后了这么多。像这样的吗?