【问题标题】:Why are tables segmented when exporting to parquet from AWS RDS为什么从 AWS RDS 导出到 parquet 时表会分段
【发布时间】:2021-11-11 14:44:43
【问题描述】:

我们使用 Python 的 boto3 库执行 start_export_task 来触发 RDS 快照导出(到 S3)。这成功地在 S3 中生成了一个具有可预测的 expected 结构的目录。通过该目录向下遍历到任何特定的表目录(如在 export_identifier/database_name/schema_name.table_name/ 中),我看到了几个 .parquet 文件。 我下载了其中几个文件并将它们转换为 pandas 数据帧,以便查看它们。它们的结构都相同,似乎显然是同一张桌子的一部分。但它们的大小范围从 100KB 到 8MB,大小似乎不可预测。表格的这些文件/“片段”是否占所有行?它们是否重复/重叠?为什么它们被如此(看似)随机分割?哪些参数控制这种分割?

最终,我正在寻找有关 parquet 文件夹/文件结构这一部分的文档。我找到了大量关于individual files are structuredpartitioning 的信息。但我认为这稍微超出了这些主题。

【问题讨论】:

    标签: amazon-web-services boto3 amazon-rds parquet


    【解决方案1】:

    您不会喜欢这个,但从 AWS 的角度来看,这是一个实施细节,并且根据文档:

    文件命名约定可能会发生变化。因此,在读取目标表时,我们建议您阅读表的基本前缀内的所有内容。

    ——docs

    大多数使用 Parquet 的工具并不真正关心 parquet 文件的数量或文件名。您只需将 Spark 或 Athena 之类的东西指向表的前缀,它就会读取所有文件并找出它们如何组合在一起。

    在 API 中也没有影响此行为的参数。如果您出于美观或其他原因更喜欢单个文件,您可以使用 Glue Job 之类的工具来读取表前缀,将每个表的数据合并到单个文件中并将其写入 S3。

    【讨论】:

    • 谢谢。我可以忍受这一点。这让我确信我只需要加载所有文件。我将发挥我的优势并从 pandas.read_parquet() 加载,然后连接数据帧。但我仍然不知道将文件分割成看似不可预测、大小不一致的原因。
    猜你喜欢
    • 2022-10-24
    • 1970-01-01
    • 2020-09-07
    • 2021-06-04
    • 1970-01-01
    • 2021-01-18
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多