Мы используем задания загрузки BigQuery с автоопределением , ALLOW_FIELD_ADDITION и ignore_unknown_values уже более года, но недавно мы получили следующую ошибкув журналах StackDriver:
jobStatus: {
additionalErrors: [
0: {
code: 13
message: "An internal error occurred and the request could not be completed. Error: 9843239"
}
]
error: {
code: 13
message: "An internal error occurred and the request could not be completed. Error: 9843239"
}
state: "DONE"
}
Я провел исследование и обнаружил, что эта ошибка возникает, когда полезная нагрузка JSON содержит одно или несколько новых полей, которые теоретически должны быть добавлены в таблицу BigQuery перед загрузкой полезной нагрузки JSON..
Пример:
Я загружаю два файла JSON.Первый создаст таблицу и загрузит данные:
$ cat ./example1.json
{ "id": 123, "name": "John Doe" }
$ bq load --autodetect --schema_update_option=ALLOW_FIELD_ADDITION --ignore_unknown_values --source_format=NEWLINE_DELIMITED_JSON test_dataset.test_table ./example1.json
Upload complete.
Waiting on bqjob_r511e2ad924d17629_00000168cdc46bab_1 ... (0s) Current status: DONE
Созданная таблица:
![enter image description here](https://i.stack.imgur.com/JKicy.png)
Второй файл JSON с новым полем:
$ cat ./example2.json
{ "id": 234, "name": "John Doe Jr", "age": 19 }
$ bq load --autodetect --schema_update_option=ALLOW_FIELD_ADDITION --ignore_unknown_values --source_format=NEWLINE_DELIMITED_JSON test_dataset.test_table ./example2.json
Upload complete.
Waiting on bqjob_r263276fb02033623_00000168cdc5b0ca_1 ... (0s) Current status: DONE
BigQuery error in load operation: Error processing job 'xxx:bqjob_r263276fb02033623_00000168cdc5b0ca_1': An internal error occurred and the request could not be completed. Error: 9843239
Если я не использую --ignore_unknown_values
, он успешно загружается и новое поле добавляется в таблицу.
Документация:
configuration.load.ignoreUnknownValues логический [Необязательно]
Указывает, должен ли BigQuery разрешать дополнительные значения, которые не представлены в схеме таблицы.Если true, дополнительные значения игнорируются.Если значение равно false, записи с дополнительными столбцами считаются ошибочными, а если слишком много плохих записей, в результате задания возвращается неверная ошибка.Значение по умолчанию неверно.Свойство sourceFormat определяет, что BigQuery рассматривает как дополнительное значение: CSV: конечные столбцы JSON: именованные значения, которые не соответствуют ни одному из имен столбцов
Похоже, что поведение --ignore_unknown_values
было изменено и, когда оноэто false
, полезные данные JSON с дополнительными полями, это больше не плохая запись.
Может кто-нибудь подтвердить это?
РЕДАКТИРОВАТЬ: Это было исправлено в тот же день, когда я написал (после 19: 30 по Гринвичу)Эта ошибка происходила с 29 января.Пожалуйста, не обращайте внимания.