BQ загружает файлы Avro с разными схемами, только с полевыми дополнениями - PullRequest
2 голосов
/ 25 января 2020

Контекст: У нас есть задание потока данных, которое записывает файлы Avro в GCS со схемой, которая меняется еженедельно (только при добавлении полей). Таким образом, это означает, что под префиксом GCS у нас есть куча файлов Avro с разными схемами, скорее всего, двумя схемами в любой момент времени. Для получения более подробной информации см. Раздел «Контекст» в этой публикации.

Проблема: В соответствии с этой SO публикацией при загрузке файлов Avro с несколькими схемами в BigQuery, BigQuery выберет файл с наибольшим порядком лексики. Тем не менее, это не то поведение, которое я наблюдал. Я наблюдаю противоречивые поведения.

В моей первой попытке моя новая схема была выбрана, и новые поля там. Однако сама загрузка BQ заняла гораздо больше времени, чем должна. На загрузку 368 594 записей ушло 7 минут.

Во второй попытке файлы с большим порядком лексики используют новую схему, и я могу открыть файл Avro и увидеть новые поля в заголовке. Но когда я загружаю эти файлы в таблицу, добавленные поля отсутствуют. Но если я загружу файл с наибольшим порядком по отдельности, в таблице появятся новые поля.

У нас есть пользовательская политика именования файлов: "chunk- $ windowStart- $ windowEnd-shardIndex-of-shardNum-UUID.avro"

Вопрос:

  1. Поскольку BQ выполняет автоматическое обнаружение схем для всех файлов Avro, каково правило в отношении старых / новых схем? Особенно, когда происходят только полевые добавления?
  2. Почему загрузка BQ заняла так много времени в моей первой попытке? Загрузился ли он со старой схемой, затем узнал о новой схеме на полпути, а затем снова сделал всю работу?
  3. Есть предложения о том, как это можно отладить?

1 Ответ

0 голосов
/ 28 января 2020

Служба поддержки Google Cloud здесь!

  1. Автоопределение схемы - это процесс вывода, который BigQuery выполняет на основе небольшой выборки строк. Это означает, что предполагаемая схема может варьироваться в зависимости от анализируемой пробы. Это может объяснить, почему вы столкнулись с непоследовательным поведением. Для получения дополнительной информации, проверьте это do c

  2. Чтобы ответить на этот вопрос, мне нужна дополнительная информация, поэтому я призываю вас открыть тикет в Google Поддержка в облаке, чтобы мы могли лучше помочь вам.

  3. См. Ответ 2.

Надеюсь, это поможет.

...