Мне нужно загрузить много файлов json в BQ, используя Apache Beam в Python. Jsons имеет довольно сложную схему (с несколькими уровнями иерархии), и что более важно - она не согласована. Некоторые поля настолько редки, что появляются только в 0,01% процентов jsons. Я не могу позволить BQ выводить схему в методе WriteToBigQuery, используя AUTO_DETECT, потому что он проверяет только 100 строк - этого недостаточно. Я попытался построить схему для 0,1% процентов данных с помощью утилиты python generate-schema - но, опять же, некоторые поля настолько редки, что все равно не работают.
Нет такого поля: FIELD_NAME.
Я попытался найти способ загрузки файла независимо от каких-либо ошибок и сохранить ошибки в таблице ошибок, которую я могу обработать отдельно. Тем не менее, я не нашел, чтобы сделать это в модуле WriteToBigQuery. Я также пытался проверить каждый json перед отправкой в конвейер, но это было очень медленно. Я также попытался «отфильтровать» json в соответствии с указанной схемой, но опять-таки это требует прохождения всех json - очень медленно, так как каждый размер json составляет около 13 КБ.
Кто-нибудь сталкивался с чем-нибудь, что может помочь? Странно, что нет никакого атрибута max_rejected для использования при записи в BQ с использованием Apache Beam. Любая идея о том, как справиться с этим, будет оценена.