Я пытаюсь написать задание потока данных, которое должно обрабатывать журналы, расположенные в хранилище, и записывать их в разные таблицы BigQuery. Какие выходные таблицы будут использоваться, зависит от записей в журналах. Поэтому я выполняю некоторую обработку журналов и выдаю их с ключом на основе значения в журнале. После чего я группирую логи по ключам. Мне нужно записать все журналы, сгруппированные по одному и тому же ключу, в таблицу.
Я пытаюсь использовать модуль beam.io.gcp.bigquery.WriteToBigQuery
с вызываемым объектом в качестве аргумента таблицы, как описано в документации здесь
Я хотел бы использовать таблицу с разделением по датам, поскольку это легко позволит мне write_truncate
на разных разделах.
Теперь я сталкиваюсь с 2 основными проблемами:
-
CREATE_IF_NEEDED
выдает ошибку, поскольку он должен создать секционированную таблицу. Я могу обойти это, убедившись, что таблицы существуют на предыдущем шаге, и если нет, то создать их.
- Если я загружаю старые данные, я получаю следующую ошибку:
The destination table's partition table_name_x$20190322 is outside the allowed bounds. You can only stream to partitions within 31 days in the past and 16 days in the future relative to the current date."
Это похоже на ограничение потоковых вставок, есть ли способ сделать пакетные вставки?
Может быть, я ошибаюсь и должен использовать другой метод.
Любое руководство, как решить эти проблемы, приветствуется.
Я использую python 3.5 и apache-beam = 2.13.0