如何在 Glue 中合并多个镶木地板文件



我有胶水作业,它每 3 秒在 S6 中写入一次镶木地板文件,而 S3 有该小时的文件夹。在一小时结束时,我想合并该小时分区中的所有文件,然后将其放在同一位置。我不想使用雅典娜表,因为工作变得很慢。我正在尝试使用Python Shell。但是,因为我还没有找到正确的解决方案。有人可以帮助我吗?

文件也是活泼的压缩

根据 Parquet 文件的大小以及目标大小 - 这里有一个在没有 Glue 的情况下执行此操作的想法:

  1. 设置每小时一次的 Cloudwatch cron 规则,以查找上一个文件的目录以调用 Lambda 函数。
  2. 打开每个镶木地板文件
  3. ,并将它们写入新的镶木地板文件。
  4. 将生成的 Parquet 文件写入 S3 密钥并移除部件。

请注意,此设计存在一些限制/注意事项:

  1. 您的 Parquet 文件需要保持在 Lambda 内存容量的限制范围内。如果您的目标是获得 128mb 的部分,您应该能够实现这一目标
  2. 单独的 Parquet 架构需要相同,才能可靠地"合并"它们。如果不是,则需要查看包含架构的 Parquet 文件的元数据页脚,以确保架构具有所有列块的元数据。
  3. 由于 S3 操作
  4. 不是原子操作,因此您可能会有短暂的时间上传新的 S3 Parquet 对象,但尚未删除旧对象。如果您不需要在此窗口中查询它,那应该不是问题。

如果您特别需要 Glue,您可能只从 Lambda调用 Glue 作业,而不是尝试从 Lambda 中自己完成。

相关内容

  • 没有找到相关文章

最新更新