apache-spark - 如何删除超过 X 天/年的 Databricks 数据?

标签 apache-spark apache-spark-sql databricks azure-databricks

我正在尝试对我创建的 Databricks 表设置保留策略,但我不知道该怎么做。我根据 Databricks 文档使用这两种配置:

  • delta.logRetentionDuration = "interval ": 配置方式 很久你就可以回到过去。默认间隔为 30 天。

  • delta.deletedFileRetentionDuration = "间隔": 配置 过时的数据文件在被删除之前会保留多长时间
    真空。默认间隔为 1 周。

我的表至少有 2 天的历史,使用 1 天的间隔是无效的,因为我查询表,每一行仍然存在,没有删除任何内容。我还使用了 VACUUM 命令,如下所示:

VACUUM test_table 保留 10 小时

但是,仍然没有删除任何内容。

最佳答案

Delta Lake提供了一个vacuum命令,可以删除旧版本的数据(任何早于指定保留期的数据)。

情况1:如果您有一个没有任何更改的增量表,那么当您使用vacuum命令时不会执行任何操作。

情况2:如果您有一个有任何更改的增量表,当您使用vacuum命令时,确实会删除旧版本的数据。

您可以引用这篇文章“Vacuuming Delta Lakes ”,其中清楚地解释了何时应用真空、何时不应用真空。

希望这有帮助。

关于apache-spark - 如何删除超过 X 天/年的 Databricks 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59999770/

相关文章:

performance - 在 Apache Spark 中花费更长的时间的任务

scala - 对Spark流数据集列进行排名

scala - 一对行上的 Spark Dataframe 滑动窗口

azure - 将 Spark ML 模型保存在 azure blob 中

odbc - Spark 新手 (ODBC/SparkSQL)

apache-spark - Spark Structured Streaming 如何确定事件已晚到?

matrix - Pyspark:按列加权平均

azure-devops - 'databricks configure --token' 挂起输入

python - 使用 Databricks 中的 PySpark 在 Azure DataLake 中使用 partitionBy 和覆盖策略

split - 如何在给定每个 RDD 的最大行数且不使用 ID 列的情况下将 RDD 拆分为多个(较小的)RDD