我想在R編程語言中處理Apache Parquet文件(在我的情況下,在Spark中生成)。如何在R中讀取Parquet並將其轉換爲R DataFrame?
是否提供R閱讀器?或者正在完成一項工作?
如果不是,那麼最便捷的方法是什麼?注意:有Java和C++綁定:https://github.com/apache/parquet-mr
我想在R編程語言中處理Apache Parquet文件(在我的情況下,在Spark中生成)。如何在R中讀取Parquet並將其轉換爲R DataFrame?
是否提供R閱讀器?或者正在完成一項工作?
如果不是,那麼最便捷的方法是什麼?注意:有Java和C++綁定:https://github.com/apache/parquet-mr
如果您使用的是Spark,那麼Spark 1.4的發佈現在相對比較簡單,請參閱下面的示例代碼,該代碼使用SparkR包,該包現在是Apache Spark核心的一部分框架。
# install the SparkR package
devtools::install_github('apache/spark', ref='master', subdir='R/pkg')
# load the SparkR package
library('SparkR')
# initialize sparkContext which starts a new Spark session
sc <- sparkR.init(master="local")
# initialize sqlContext
sq <- sparkRSQL.init(sc)
# load parquet file into a Spark data frame and coerce into R data frame
df <- collect(parquetFile(sq, "/path/to/filename"))
# terminate Spark session
sparkR.stop()
的擴展案例顯示@ https://gist.github.com/andyjudson/6aeff07bbe7e65edc665
我不知道,如果你沒有使用星火,你可以使用任何其他包裝。
非常感謝您提供這樣一個全面的例子。對我非常有幫助,我相信,還有很多其他人。 – metasim
任何猜測爲什麼這將不適用於S3上的我的實木複合地板文件?關鍵和祕密被聲明,python可以用sqlCtx.read.parquet(「s3n:// bucket/path/part1 = whatever /」)讀取它們。我也嘗試將密鑰和密碼直接放在URL中 - 「s3n:// key:pass @ bucket/path」 –
害怕我沒有使用S3,所以我不確定什麼可行。可能是因爲S3在SparkR中還不被支持,我們剛剛看到它在覈心中的第一個版本,並且遇到了問題。您是否確認了從pyspark/scala會話中加載的數據? - 如果是這樣,我會更傾向於上述理論。可能值得檢查SparkR問題日誌(https://issues.apache.org/jira/browse/SPARK/component/12325400/?selectedTab=com.atlassian.jira.jira-projects-plugin:component-summary-panel )或者只是嘗試搜索與S3有關的問題? –
要讀取Amazon S3存儲桶中的parquet文件,請嘗試使用s3a而不是s3n。使用EMR 1.4.0,RStudio和Spark 1.5.0閱讀鑲木地板文件時,這對我很有用。
或者到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)
點我們的示例文件,告訴我們在哪兒文件格式規範是,告訴我們更多的不是「做我怎麼讀富格式文件在R?「 – Spacedman
@Spacedman對不起,忘了觀衆會更普遍。這是一個自我描述的列式數據存儲,理論上它將直接映射到R數據幀。 – metasim