я читаю 25m+ строки, ~ 300 столбцов из BigQuery и записать на SQL Server с JDBC, и это занимает слишком много времени. Когда я смотрю на то, чтобы выяснить, какой шаг занимает больше всего времени неэффективно, я сталкиваюсь с SDFBoundSourCeerEader . SDFBoundedSourCeerEader Шаг получает элементы один за другим, и это увеличивает время, так как требуется, а также требует использования большого количества VCPU и получения множества ошибок, таких как
Код: Выделить всё
Error message from worker: Error encountered with the status channel: SDK harness sdk-0-0 disconnected.Код: Выделить всё
Operation ongoing in bundle process_bundle-3484514982132990920-35 for at least 12m39s without outputting or completing:Код: Выделить всё
Completed work item 7528337809130607698 UNSUCCESSFULLY: CANCELLED: [type.googleapis.com/util.MessageSetPayload='[dist_proc.dax.internal.StackTraceProto] { stack_top_loc { filepath: .... [dist_proc.dax.workflow.workflow_utils_message_ext]: WORK_PROGRESS_UPDATE_LEASE_ALREADY_CANCELLED }']Я попробовал:
- Добавление кластера и/или разделения в таблицу BigQuery
- Добавление эксперимента, pre_optimize = all < /code> < /li>
num Работники: 5, 10, 15, 20 (однако, конечно, я хотел бы использовать минимальный работник) < /li>
Тип машины: n2-standard-4, n2-standard-8, n2-standard-16 < /li>
Алгоритм автоматического масштаба: сквозной пропускной день (всегда) < / / li>
Размер записи: 10000, 25000, 50000, 100000, 250000 < /li>
< /ul>Конфигурации:Код: Выделить всё
ReadFromBigQuery
Метод: экспорт - Метод: Direct_read < /li>
Чтение из запроса - Чтение из таблицы
- Выходной тип: beam_row
- Тип вывода: python_dict < /code> и схема, которую я создал (я создал ()
Код: Выделить всё
..NamedTuple
Пример DATAFLOW < /p>
Пример dataflow2 < /p>
Пример DATAFLOW
Подробнее здесь: https://stackoverflow.com/questions/793 ... bigquery-i