Pandas 更新模式随时间变化的拼花地板数据集

Pandas 更新模式随时间变化的拼花地板数据集,pandas,parquet,pyarrow,apache-arrow,Pandas,Parquet,Pyarrow,Apache Arrow,我有一个单独的拼花地板文件,几个月来我每天都在逐步构建它。现在文件大小约为1.1GB,当读入内存时,它接近我的PC内存限制。因此,我想根据年份和月份组合(即Data_YYYYMM.parquet.snappy)将其拆分为几个文件,所有这些文件都位于一个目录中 我当前的进程读取我需要附加的每日csv,使用pyarrow读取历史拼花文件并转换为pandas,在pandas(pd.concat([df_daily_csv,df_historical_parquet]))中合并新的和历史数据,然后写回单

我有一个单独的拼花地板文件,几个月来我每天都在逐步构建它。现在文件大小约为1.1GB,当读入内存时,它接近我的PC内存限制。因此,我想根据年份和月份组合(即
Data_YYYYMM.parquet.snappy
)将其拆分为几个文件,所有这些文件都位于一个目录中

我当前的进程读取我需要附加的每日csv,使用pyarrow读取历史拼花文件并转换为pandas,在pandas(
pd.concat([df_daily_csv,df_historical_parquet])
)中合并新的和历史数据,然后写回单个拼花文件。每隔几周,数据的模式就会发生变化(即,一个新列)。对于我当前的方法,这不是一个问题,因为pandas中的concat可以处理不同的模式,我每次都会覆盖它

通过切换到这个新设置,我担心在几个月之间架构不一致,然后无法在多个月内读取数据。我已经尝试过了,但由于模式不匹配而出现错误。我认为可以使用
pyarrow.parquet.Dataset
中的schema参数指定这一点。从文档中看,它似乎采用了
pyarrow.parquet.Schema
类型。当我尝试使用它时,我得到了属性错误:模块“pyarrow.parquet”没有属性“Schema”。我还尝试获取pyarrow表(
Table.schema
)的架构并将其传递给schema参数,但得到了错误消息(sry我现在忘记了错误,现在无法连接工作站,因此无法再现错误-我将在可能时使用此信息进行更新)

我在更广泛的Arrow/Datasets项目的上下文中看到了一些关于模式规范化的内容,但我不确定我的用例是否适合所涵盖的内容,而且Datasets功能是实验性的,所以我不想在生产中使用它

我觉得这是一个非常常见的用例,我想知道我是否遗漏了一些东西,或者拼花地板是否不适合随着时间的推移进行模式更改,就像我正在经历的那样。我已经考虑过调查新文件的模式,比较与历史的对比,然后对数据集中的每个文件进行反序列化、更新模式和重新序列化,但我真的希望避免这种情况

因此,我的问题是:

  • 使用pyarrow拼花数据集(或pyarrow API中的其他内容)是否允许我读取多个拼花文件中的所有数据,即使模式不同?具体来说,我的期望是新列将被追加,并且在此列可用之前的值将为null)。如果是,你是如何做到的
  • 如果1的答案为否,是否有其他方法或库来处理此问题
  • 我一直在寻找一些资源


    是否找到解决方案?我正在寻找类似的东西。找到解决方法吗?我在找类似的东西。