Контекст: У нас есть задание потока данных, которое записывает файлы Avro в GCS со схемой, которая меняется еженедельно (только при добавлении полей). Таким образом, это означает, что под префиксом GCS у нас есть куча файлов Avro с разными схемами, скорее всего, двумя схемами в любой момент времени. Для получения более подробной информации см. Раздел «Контекст» в этой публикации.
Проблема: В соответствии с этой SO публикацией при загрузке файлов Avro с несколькими схемами в BigQuery, BigQuery выберет файл с наибольшим порядком лексики. Тем не менее, это не то поведение, которое я наблюдал. Я наблюдаю противоречивые поведения.
В моей первой попытке моя новая схема была выбрана, и новые поля там. Однако сама загрузка BQ заняла гораздо больше времени, чем должна. На загрузку 368 594 записей ушло 7 минут.
Во второй попытке файлы с большим порядком лексики используют новую схему, и я могу открыть файл Avro и увидеть новые поля в заголовке. Но когда я загружаю эти файлы в таблицу, добавленные поля отсутствуют. Но если я загружу файл с наибольшим порядком по отдельности, в таблице появятся новые поля.
У нас есть пользовательская политика именования файлов: "chunk- $ windowStart- $ windowEnd-shardIndex-of-shardNum-UUID.avro"
Вопрос:
- Поскольку BQ выполняет автоматическое обнаружение схем для всех файлов Avro, каково правило в отношении старых / новых схем? Особенно, когда происходят только полевые добавления?
- Почему загрузка BQ заняла так много времени в моей первой попытке? Загрузился ли он со старой схемой, затем узнал о новой схеме на полпути, а затем снова сделал всю работу?
- Есть предложения о том, как это можно отладить?