Узел display
также является записью в BigQuery. Вот как должна быть установлена схема:
[
{
"name": "verb",
"type": "RECORD",
"mode": "NULLABLE",
"fields": [
{
"name": "id",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "display",
"type": "RECORD",
"mode": "REPEATED",
"fields": [
{
"name": "enUS",
"type": "STRING",
"mode": "NULLABLE"
}
]
}
]
}
]
проблема с вашим примером verb
заключается в отсутствии квадратных скобок, содержащих поле; кроме того, есть еще одна проблема с дефисом "-" в en-US
: имена полей могут содержать только буквы, цифры и подчеркивания. должно быть установлено, например, enUS
.
- это схема, отображаемая в пользовательском интерфейсе, если ваш пример verb
(после исправления enUs
) импортирован с использованием автоматического определения схемы :
verb RECORD NULLABLE
verb.display RECORD NULLABLE
verb.display.enUS STRING NULLABLE
verb.id STRING NULLABLE
Типы верны, однако режим display
определяется как NULLABLE
, поскольку [ ]
.
нет.
, поскольку формат импорта BigQuery JSON разделен символом новой строки, тогда этот импорт должен иметь следующий формат:
{"verb":{"id":"http://adlnet.gov/expapi/verbs/failed","display":[{"enUS":"failed"}]}}
затем режим display
определяется как REPEATED
.
как только ваша схема будет отсортирована и у вас будет правильно сформированный и действительный файл JSON, затем просто используйте BigQuery Java API для ее загрузки, без необходимости в сложном потоке и сторонней библиотеке для Заранее сериализуйте JSON.
Источник:
Указание схемы
Указание вложенных и повторяющихся столбцов