Поток Bigquery: «Не удалось вставить XX строк из-за тайм-аута»

Последние дни наш стрим встречался с

"Failed to insert XX rows. First error: {"errors":[{"reason":"timeout"}],"index":YY}"  

За последние полмесяца непрерывного стриминга из неизменных источников данных и программных скриптов такого сбоя раньше не было.

ID проекта: красная дорога-574


person foxwendy    schedule 18.08.2014    source источник


Ответы (2)


Член команды BigQuery здесь.

Похоже, наша документация немного неверна, поскольку мы можем частично зафиксировать строки. Мы полностью отклоним запрос, если есть недопустимые строки (несоответствие структуры), но отдельные строки могут не буферизоваться.

В этом случае не удалось зафиксировать только указанные строки. Если у вас есть идентификатор вставки, вы можете просто повторить неудачные строки или повторить полный запрос, если хотите (хотя каждая повторная строка будет учитываться в квоте вашей таблицы).

Увеличение числа ошибок на уровне строк связано с изменением способа обработки пакетов вставок. Ранее весь запрос столкнулся бы с тайм-аутом.

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

person Sean Chen    schedule 19.08.2014
comment
1. Содержится ли идентификатор неудачной вставки в информации об ошибке? В противном случае я понятия не имею, какие из них провалились, а какие нет. Что касается моего наблюдения на данный момент, я не видел идентификатор вставки в информации об ошибке. 2. Похоже, что со следующего года поток будет взиматься в зависимости от количества запросов, мы обеспокоены тем, что этот тип проблемы с производительностью значительно увеличит нашу стоимость. 3. Наша структура данных будет постоянной после установки, поэтому я не думаю (и я также дважды проверил наши данные), есть какие-либо несоответствия структуры. Существуют ли какие-либо другие виды инвалидности? - person foxwendy; 19.08.2014
comment
В списке insertErrors каждая ошибка имеет свойство индекса. Это соответствует индексу строки в исходном запросе. Плата будет основываться на количестве успешно принятых дедуплицированных строк, поэтому это не должно влиять на ваши расходы. Наконец, прямо сейчас мы работаем над обновлением документации, чтобы подробно описать набор ожидаемых причин, а также предлагаемые действия. Это должно быть обновлено в течение дня или около того. Тем не менее, есть: остановлено: ряд в порядке, повторите попытку как есть. недействительно: строка имеет несоответствие схемы. - person Sean Chen; 19.08.2014
comment
(мне не нравится переполнение стека) остановлено: строка в порядке, но не зафиксирована, повторите попытку как есть. (обычно происходит из-за ошибки схемы с другой строкой) недопустимо: строка имеет несоответствие схемы. Не повторяйте попытку. тайм-аут: время ожидания строки истекло, неизвестное состояние фиксации. Повторите попытку как есть. internalError: Произошла какая-то неизвестная ошибка со строкой... повторная попытка может помочь (а может и нет). Все повторные попытки должны следовать экспоненциальному шаблону отсрочки и, при необходимости, ставиться в очередь для повторных попыток с длительной задержкой. - person Sean Chen; 20.08.2014

Мы только что внедрили изменение на выходных, которое должно значительно снизить количество тайм-аутов, с которыми вы сталкиваетесь.

За последние пару недель TableData.insertAll API стал свидетелем значительного увеличения нагрузки со стороны клиентов. Хотя мы должны быть в состоянии справиться с этой нагрузкой без проблем, она выявила несколько узких мест в нашей системе, над устранением которых мы работали. Судя по нашему мониторингу, задержка должна вернуться к норме по состоянию на вчерашний вечер. Если вы продолжаете видеть тайм-ауты, сообщите нам об этом.

person Jordan Tigani    schedule 18.08.2014
comment
Означает ли этот тайм-аут, что весь запрос не выполняется? (Я надеюсь, что это так). А можно просто повторить? будут ли дублироваться данные? (если у меня есть insertId) - person foxwendy; 18.08.2014
comment
все еще происходит (время EST): 2014-08-18 13:50:34,743 FATAL Не удалось вставить 1 строку. Первая ошибка: {ошибки: [{причина: время ожидания}], индекс: 473} 2014-08-18 13:54:34,200 FATAL Не удалось вставить 18 строк. Первая ошибка: {ошибки: [{причина: время ожидания}], индекс: 5} 2014-08-18 13:55:45,128 FATAL c.g.b.b.u.BigqueryHelper Не удалось вставить 2 строки. Первая ошибка: {ошибки: [{причина: время ожидания}], индекс: 32} 2014-08-18 13:56:06,583 FATAL Не удалось вставить 4 строки. Первая ошибка: {ошибки: [{причина: время ожидания}], индекс: 104} 2014-08-18 13:56:06,802 FATAL Ошибка.. - person foxwendy; 18.08.2014
comment
Если вы используете вставку, должно быть безопасно (и рекомендуется) повторить попытку. - person Jordan Tigani; 18.08.2014
comment
Доброе утро @ Джордан Тигани, как дела? Я должен сказать, что таких провалов сейчас много. - person foxwendy; 19.08.2014
comment
Я вижу всплеск задержки примерно в 7 утра по тихоокеанскому времени. Я посмотрю на это. Это казалось довольно недолгим, поэтому, если вы попытаетесь повторить попытку, это должно было довольно скоро преуспеть. - person Jordan Tigani; 19.08.2014
comment
Я часто вижу эту проблему в журналах. У меня также были настроены повторные попытки. Но это заканчивается с той же ошибкой. Можете ли вы подтвердить, происходит ли тайм-аут только из-за несоответствия структуры или это что-то в BigQueryAPI? Я периодически вижу эту проблему, когда каждый раз просматриваю один и тот же набор данных для потоковой пакетной вставки. @Шон Чен - person karthik; 07.11.2018