R プログラミング言語でApache Parquetファイル (私の場合は Spark で生成)を処理したいと考えています。
Rリーダーは利用できますか? それとも、作業は 1 つに行われていますか?
そうでない場合、そこに到達するための最も便利な方法は何ですか? 注: Java および C++ バインディングがあります: https://github.com/apache/parquet-mr
R プログラミング言語でApache Parquetファイル (私の場合は Spark で生成)を処理したいと考えています。
Rリーダーは利用できますか? それとも、作業は 1 つに行われていますか?
そうでない場合、そこに到達するための最も便利な方法は何ですか? 注: Java および C++ バインディングがあります: https://github.com/apache/parquet-mr
の代わりにSparkR
、次を使用できるようになりましたsparklyr
。
# install.packages("sparklyr")
library(sparklyr)
sc <- spark_connect(master = "local")
spark_tbl_handle <- spark_read_parquet(sc, "tbl_name_in_spark", "/path/to/parquetdir")
regular_df <- collect(spark_tbl_handle)
spark_disconnect(sc)
reticulate を使用すると、python から parquet ファイルまで pandas を使用できます。これにより、spark インスタンスを実行する手間を省くことができます。
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)
Amazon S3 バケットで寄木細工のファイルを読み取るには、s3n の代わりに s3a を使用してみてください。EMR 1.4.0、RStudio、Spark 1.5.0 を使用して寄木細工のファイルを読み取るときは、これでうまくいきました。