Cloud Spanner в настоящее время не выставил массовый метод импорта. Похоже, вы планируете вставлять каждую строку отдельно, что не является наиболее оптимальным методом. Документация имеет лучшие (и плохие) практики efficient bulk loading:
Чтобы получить оптимальную пропускную способность записи для насыпных грузов, разбивать данные на первичного ключа с этой схемой:
Каждый раздел содержит ряд последовательных строк , Каждая фиксация содержит данные только для одного раздела. Хорошее эмпирическое правило для вашего количества разделов в 10 раз больше количества узлов в вашем экземпляре Cloud Spanner. Поэтому, если у вас есть N узлов, в общей сложности 10 * N разделов, вы можете назначить строки для разделов:
Сортировка ваших данных по первичному ключу. Разделение его на 10 * N отдельных разделов . Создание набора рабочих задач, которые загружают данные. Каждый работник будет писать в один раздел. Внутри раздела рекомендуется, чтобы ваш рабочий записывал строки последовательно. Однако случайным образом записывать данные в пределах раздела также должно обеспечивать достаточно высокую пропускную способность .
Как только ваши данные загружены, Cloud Spanner автоматически разбивает и балансирует ваши данные, чтобы сбалансировать нагрузку на узлы вашего экземпляра . Во время этого процесса вы можете столкнуться с временными падениями в пропускной способности .
Следуя этому образцу, вы должны увидеть максимальную общую объемную запись пропускной способности 10-20 Мбайт в секунду на узел.
Похоже, вы пытаетесь загрузить весь большой файл в память перед обработкой. Для больших файлов вы должны посмотреть на загрузку и обработку фрагментов, а не на все. Я замечаю эксперта Node, но вам, вероятно, следует попробовать его прочитать как поток и не хранить все в памяти.