Я получаю сообщение об ошибке Невозможно перейти в таблицу дельты перемещения во времени до версии X, тогда как я вижу версию X при просмотре истории в Azure Databricks.

У меня есть таблица в дельте озера со следующими tblproperties:  введите описание изображения здесь

Я пытаюсь получить доступ к версии, которая была там в прошлом месяце, 322.

Когда я смотрю на историю, я вижу ее:  введите описание изображения здесь

Но когда я пытаюсь получить к нему доступ с помощью такой команды:

spark.read.format("delta").option("versionAsOf", 322).load(path)

Я получаю такую ​​ошибку:

AnalysisException: Cannot time travel Delta table to version 322. Available versions: [330, 341].;

Я не могу понять проблему. Я использую Azure Databricks.


person Nastasia    schedule 10.03.2021    source источник
comment
Умеете ли вы читать версии 330 и 341. Какие команды вы использовали для записи в дельта-таблицу?   -  person Ali Hasan    schedule 11.03.2021
comment
Да, я могу читать версии 330 и 341. Я использовал функцию df.write.format (delta) ... для записи новых данных.   -  person Nastasia    schedule 11.03.2021
comment
а какой формат вы используете для перезаписи или добавления?   -  person Ali Hasan    schedule 11.03.2021
comment
я использую дельту   -  person Nastasia    schedule 11.03.2021


Ответы (1)


Я не уверен, что разбираюсь в этой ошибке. В DeltaLake есть открытый запрос на вытягивание, который может решить проблему: https://github.com/delta-io/delta/pull/627.

До этого человек из Databricks предложил мне обходной путь: установить для delta.checkpointRetentionDuration значение X дней. Это позволит вашим контрольным точкам продержаться дольше, чтобы иметь доступ к более старым версиям.

Затем вы должны запустить что-то подобное в своей дельта-таблице:

spark.sql(        f"""
        ALTER TABLE delta.`path`
            SET TBLPROPERTIES (
                delta.logRetentionDuration = 'interval X days',
                delta.deletedFileRetentionDuration = 'interval X days',
                delta.checkpointRetentionDuration = 'X days'
            )
        """
)

Ваши версии будут храниться до X дней.

person Nastasia    schedule 29.03.2021