При непрерывном приеме файлов из исходной корзины s3 я хотел бы иметь возможность обнаруживать случаи удаления файлов. Насколько я могу судить, автозагрузчик не может обнаружить файлы, удаленные в исходной папке. Следовательно, дело не может быть поддержано. Сначала я хочу это подтвердить, и если это действительно так, узнать о подходе или обходном пути, который люди используют для обработки этого сценария.
Я записываю содержимое файла в дельта-таблицу, и, по сути, мне хотелось бы удалить содержимое файла из дельта-таблицы.
В качестве альтернативы вы можете просто создать внешнюю таблицу, указывающую на это место в Amazon S3. При каждом доступе к таблице Databricks считывает содержимое файлов в S3. Если файлы удалены, следующий запрос к таблице не будет включать данные, поскольку их больше нет в S3. Если у вас есть конвейер данных (например, с использованием dbt), вы можете просто выбрать из внешней таблицы таблицу Delta, и данные будут точно соответствовать тем, что сейчас находятся в S3. Никаких мероприятий не требуется.
Спасибо. Я думаю, что не знаю о концепции внешней таблицы, просто чтобы убедиться, можете ли вы указать мне правильный документ, чтобы я мог провести комплексную проверку по этому вопросу?
Нашёл medium.com/@harshavardhan.achyuta/…
Хотя я не уверен, что мне это подойдет. Мне нужно будет лучше расширить объяснение варианта использования.





Согласно документации Databricks в настоящее время нет, AutoLoader срабатывает только при создании объекта (например, событий ObjectCreated) и поэтому не поддерживает обнаружение удаленных файлов; а также рабочие процессы Databricks с помощью таких средств, как триггер прибытия файлов.
Идеальное решение будет зависеть от того, что вы хотите сделать с удаленными файлами. Однако, вообще говоря, возможным обходным решением было бы создание собственной лямбда-функции AWS, которая запускается на основе событий s3:ObjectRemoved:* (вы можете запускать лямбда-функции с помощью уведомлений о событиях S3). В зависимости от того, что вам нужно сделать с удаленным файлом, вы можете предпочесть полностью выполнить обработку с помощью этой функции Lambda. Или вы можете реализовать функцию Lambda, чтобы просто скопировать файл в другое место, что можно использовать в рабочем процессе Databricks либо с помощью AutoLoader, либо с помощью триггера прибытия файлов.
Я принимаю это, поскольку это действительно решение проблемы. Спасибо тебе за это.
Это вообще гениально :) !!! Моя нынешняя архитектура немного отличается, но нестандартное мышление определенно поможет, спасибо.
к сожалению, на секунду, хотя кажется, что возникнет проблема. Чтобы получить доступ к файлу, мне нужно, чтобы файл все еще был доступен в корзине. Однако данное решение не позволит этого. Итак, единственное, что я здесь вижу, это наличие логики для перемещения объекта в другую папку.
Как только вы обнаружите, что объект был удален, что вы хотите, чтобы произошло? Пожалуйста, отредактируйте свой вопрос и добавьте дополнительную информацию о потоке информации и поведении, которое вы ищете.