微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Dask read_parquet用于嵌套拼花文件

如何解决Dask read_parquet用于嵌套拼花文件

我有许多csv文件(超过90个)对于内存(每个压缩文件〜0.5gb)太大,它们都具有相同的架构。我想转换为镶木地板,然后使用dask进行时间序列分析。

目前,我将它们读入熊猫,执行一些类型检查和业务逻辑,然后使用nops_eval()发送到镶木地板。我想按日期和版本号进行分区。因此,代码如下所示:

ddf.to_parquet

在这可行,最后我得到一个文件夹结构,如下所示:

'some / path / _Metadata'

'some / path / _common_Metadata'

'some / path / DATE = 202001 / VERSION = 0 / part.0.parquet'

....依此类推。

现在,我想读入它,并执行基本的内存操作。阅读时得到奇怪的结果。

import pandas as pd
import dask.dataframe as ddf
import pyarrow.dataset as ds

d = pd.DataFrame({'DATE':[202001,202002,202003,202004,202005]*20,'VERSION':[0,1]*50,'OTHER':[1]*100})
d_dask = ddf.from_pandas(d,npartitions=2)
ddf.to_parquet(d_dask,'some/path/',engine = 'pyarrow',partition_on = ['DATE','VERSION'],\
write_Metadata_file = True,schema='infer')

我得到以下信息:

test_read = ddf.read_parquet('some/path/',engine='pyarrow',partitioning="hive")
test_read.groupby('DATE').sum()
[IN]: test_read.groupby('DATE').sum().compute()

现在使用[OUT]: DATE OTHER 202001 0 202002 0 202003 0 202004 0 202005 0 API可以正常工作。

pyarrow.datasets

我得到以下信息:

test_read = ds.dataset('some/path/',format='parquet',partitioning="hive")
test_read.to_table().to_pandas().groupby('DATE').sum()

那是我的期望。

有人知道这是怎么回事吗?

版本:

[OUT]:
        OTHER  VERSION
DATE                  
202001     20       10
202002     20       10
202003     20       10
202004     20       10
202005     20       10

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?