我试图在python中读取实木复合地板文件。 我使用了镶木地板和json导入。 我使用了以下代码,因为我不想使用熊猫。
with open("test.parquet") as fo:
for row in parquet.DictReader(fo):
print(json.dumps(row))
这似乎效果很好。 我想在R中实现相同的功能,因此尝试在R中使用“网状”来使用python函数。 我使用了以下代码:
library(reticulate)
py <- import_builtins()
pq <- import("parquet")
js <- import("json")
with(py$open("test.parquet") %as% pq_file, {
for (val in pq$DictReader(pq_file)) {
print(js$dumps(val))}})
由于我只是尝试而已,因此我尝试了不同的事情,并且遇到了不同的错误。对于上面的代码,我明白了。
Error in for (val in pq$DictReader(pq_file)) { : invalid for() loop sequence
我也尝试过:
with(py$open("test.parquet") %as% pq_file, {
for (val in 1:4) {
print(js$dumps(pq$DictReader(pq_file)$keys()[val]))}})
和错误:
AttributeError: 'generator' object has no attribute 'keys'
我正在尝试使用网纹读取R中的实木复合地板文件。 或以其他任何方式读取R中的实木复合地板文件。我根本不打算使用熊猫。我也尝试过pyarrow,但是它需要熊猫来干预
如果我可以在R中使用带有Context或For循环的python(我认为这不可行,但以防万一),我认为可以做到。 如果有人对此有任何了解。让我知道。
谢谢
答案 0 :(得分:0)
如果您不介意使用Spark,并且只想以任何方式在R中读取拼花文件而无需使用Pandas,则可以使用 sparklyr 包和轻松读取它spark_read_parquet 函数。
以下是其用法参考:https://spark.rstudio.com/reference/spark_read_parquet/
以下对我来说很好用(Ubuntu 18.04):
library(sparklyr)
spark_conn <- spark_connect(master = "local")
data_frame <- collect(spark_read_parquet(spark_conn, "my_parquet", "~/data/my_parquet.parquet"))
spark_disconnect(spark_conn)
为此,请确保同时安装了 sparklyr 和 dplyr
install.packages(dplyr)
install.packages(sparklyr)
如果您需要配置Spark,则在加载 sparklyr 后(如果您使用Java 8),可以使用spark_install()
轻松进行操作。您可以使用
sudo apt install openjdk-8-jdk
sudo update-alternatives --config java ==> select the option to use Java 8