【问题标题】:Read a parquet file in linux machine在 linux 机器中读取 parquet 文件
【发布时间】:2018-08-12 09:46:21
【问题描述】:

我尝试在 python 中读取 parquet 文件。 我使用了镶木地板和 json 导入。 我使用了下面的代码,因为我不想使用 pandas。

with open("test.parquet") as fo:
    for row in parquet.DictReader(fo):
        print(json.dumps(row))

这似乎运作良好。 我想在 R 中实现相同的功能,所以我尝试使用“reticulate”来在 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'

我正在尝试使用 reticulate 读取 R 中的镶木地板文件。 或任何其他方式来读取 R 中的镶木地板文件。我根本不想使用熊猫。我也试过pyarrow,但是需要pandas来干预

如果我可以在 R 中将 python 与 Context 或 For 循环一起使用(我认为这不可行,但以防万一),我认为可以做到。 如果有人对此有任何了解。告诉我。

谢谢

【问题讨论】:

    标签: python r reticulate


    【解决方案1】:

    如果您不介意使用 Spark,并且只想在不使用 Pandas 的情况下以任何方式读取 R 中的 parquet 文件,您可以使用 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)
    

    为此,请确保同时安装 sparklyrdplyr

    install.packages(dplyr)
    install.packages(sparklyr)
    

    如果您需要配置 Spark,一旦您加载 sparklyr(假设您使用 Java 8),就会有一个使用 spark_install() 的简单界面。您可以使用

    轻松降级Java
    sudo apt install openjdk-8-jdk
    sudo update-alternatives --config java ==> select the option to use Java 8
    

    【讨论】:

    • 这很有帮助,我前段时间确实遇到过。但我不想将Sparklyr 用于读取文件的唯一目的,我正在寻找类似Python 中的Pandas 之类的东西。我正在等待rarrow 发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2018-04-11
    • 2020-06-30
    • 2016-12-15
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多