gpt4 book ai didi

pyspark - 如何在不阅读内容的情况下获取 Delta 表的架构?

转载 作者:行者123 更新时间:2023-12-05 04:28:37 29 4
gpt4 key购买 nike

我有一个包含数百万行和多个不同类型的列的增量表,包括。嵌套结构。我想在运行时创建增量表的空 DataFrame 克隆 - 即相同的模式,没有行。

我可以读取架构而不读取表的任何内容吗(这样我就可以基于架构创建一个空的 DataFrame)?我认为这是可能的,因为有增量事务日志并且 Delta needs to quickly access table schemas itself .

我尝试过的:

  • df.schema - 在增量表加载后立即访问 schema 也需要几分钟时间。
  • limit(0) - 加载后立即调用 limit(0) 仍然需要几分钟。
  • limit(0).cache() - limit 有时会在计划中四处移动,所以我也尝试将 cache 添加到“固定其位置”。

还有其他选择吗?仅访问事务日志 JSON 并从最新事务中读取模式是否正确? (鉴于我们

上下文:我想在我们的 CI 中添加一个步骤,在它实际运行数据之前检查代码和关于模式的各种假设。

最佳答案

当您访问 Delta 的架构时,它不会遍历所有数据,因为 Delta 将架构存储在事务日志本身中,因此 df.schema 应该足够了。但是当访问事务日志时,可能需要一些时间从用于事务日志的 JSON/Parquet 文件重建实际模式。虽然几分钟很奇怪,但您需要深入研究执行计划。

我不建议直接读取事务日志,因为它的格式是内部的东西,而且最新的事务可能不包含模式(它不会放入每个日志文件,只有在发生更改时才会)。

关于pyspark - 如何在不阅读内容的情况下获取 Delta 表的架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72557468/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com