【问题标题】:parquet: Dataset files with differing columnsparquet:具有不同列的数据集文件
【发布时间】:2019-11-30 08:47:43
【问题描述】:

使用 pyarrow。 我有一个由多个镶木地板文件组成的镶木地板数据集。如果文件之间的列不同,那么我会得到“ValueError:Schema in was different”。

有没有办法避免这种情况? 这意味着我想要一个由文件组成的数据集,每个文件都包含不同的列。

如果数据集的特定组件文件中不存在列,我想这可以通过 pyarrow 将缺失列的值填充为 na 来完成。

谢谢

【问题讨论】:

  • 我想知道为什么这个问题有 2 个反对票,而用 pyarrow 解决这个问题非常清楚且绝对不是显而易见的问题。你设法解决了你的问题吗?我正在尝试解决类似的问题 - 访问 hdfs 并从 parquet 文件中读取数据,但是有些文件的架构与其他文件不同。
  • 这是设计使然,数据集中的所有文件必须具有相同的架构。有一些有效的方法可以读取文件的架构,这样您就可以避免崩溃。
  • 架构随着时间的推移而演变的情况经常发生,因为有一天可能会决定在数据集中添加一列,而不更改过去的 parquet 文件。理想情况下,当我尝试一次读取新旧镶木地板文件时,我希望在这种情况下在历史数据中丢失值。但我还无法弄清楚。我想 pyarrow 将来可能会将此功能添加到“非传统”数据集......或者你知道如何处理这种情况吗?

标签: parquet pyarrow apache-arrow


【解决方案1】:

加载具有单独数据帧(例如 df1 和 df2)的文件,通过引用 THIS 文章合并这些数据帧。

在文章中,你可能会发现两种合并方式,一种是

df1.merge(df2, how = 'outer')

另外一个用pandas包如下:

pd.concat([df1, df2])

【讨论】:

  • 这不是我的意思,我是在按列分区之后。将更新我的问题以反映这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 2020-07-14
  • 2019-09-03
  • 1970-01-01
相关资源
最近更新 更多