【发布时间】:2021-09-13 20:20:41
【问题描述】:
Arrow 的数据集功能对于不断增长的数据库来说是一个很好的工具,即使数据被分区和压缩,人们也希望继续向其中添加更多内容。我已经能够成功地将我的数据分区到我的列中,从而使过滤和查询变得更快。但是 Arrow 是否允许按行组分区?
文档没有详细解释这一点,我的目的是逐行分区,然后能够查询这些分区的元数据[最高值,最低值]。 Arrow 允许这样做吗?
到目前为止,我已经尝试过片段
fragments = list(dataset.get_fragments())
fragments[0].split_by_row_group()
但是,这只是让我返回由柱状分区创建的文件夹结构中的文件。
【问题讨论】:
-
你能解释一下'按行分区'是什么意思吗?根据您的描述,您可能需要/想要一个
group_by运算符来聚合每个列,然后计算此类分组的最小值/最大值。这就是说,据我所知,Arrow 中还没有聚合/归约运算符。 -
我们可以如何指定partition_cols,我的理解是我们可以按行来做同样的事情。例如,如果我有跨越多天的数据,按日期对它们进行分区会非常有帮助,这样我就可以直接从元数据中查询最小值和最大值,groupby 绝对是一个很好的选择,但我希望可以存储这些值在写入文件而不是派生帖子时读取所有数据
-
我认为这就是我的误解的来源:在您的示例中,我假设您的数据将有一个类似
date或类似的列。这样,如果您将partition_cols设置为dateparquet 会将文件保存在date子文件夹中,每个子文件夹仅包含该特定日期的数据。然后您应该能够阅读每天的最小值/最大值。