Как решить проблему, связанную с BigQueryError "причина": "неверно", "местоположение": "тест", "debugInfo": "", "сообщение": "нет такого поля". - PullRequest
0 голосов
/ 24 октября 2019

Кто-то раньше работал с потоковой передачей данных в (google) BigQuery с помощью облачных функций Google (insert_rows_from_dataframe())?

Моя проблема в том, что иногда схема таблицы обновляется не сразу и при попытке загрузкинекоторые данные в таблицу сразу после создания нового поля в схеме возвращает ошибку:

BigQueryError: [{"reason": "invalid", "location": "test", "debugInfo":" "," message ":" такого поля нет. "}]"

Однако, если я попытаюсь загрузить снова через несколько секунд, все будет работать нормально, поэтому мой вопрос, если кто-то знаетмаксимальный период времени в секундах для этого обновления (со стороны BigQuery) и, если возможно, как-то избежать этой ситуации?

1 Ответ

1 голос
/ 26 октября 2019

Поскольку работа API на стороне BigQuery не является атомарной, вы не можете избежать этого случая.

Вы можете только смягчить влияние этого поведения и выполнить сон, повторные попытки или установить Try-catch, чтобы воспроизвести insert_rows_from_dataframe() несколько раз (не бесконечно, в случае реальной проблемы, но 5 раз). например) до тех пор, пока он не пройдет.

Ничто не волшебно, если консистенция не управляется на одной стороне, другая сторона должна справиться с этим!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...