Cloud Spannerでは現在、一括インポートメソッドが公開されていません。あなたは個々の行を個別に挿入するように思えますが、これは最適な方法ではありません。ドキュメントはefficient bulk loadingのための最高の(と悪い)慣行があります
バルクロードに最適な書き込みスループットを取得するには、このパターンと 主キーで、あなたのデータを分割:
各パーティションは連続した行の範囲が含まれています。各コミット には、1つのパーティションのみのデータが含まれています。 のパーティション数は、 Cloud Spannerインスタンスのノード数の10倍です。したがって、N個のノードがあり、合計で10 * N のパーティションがある場合は、次の方法でパーティションに行を割り当てることができます。
データを主キーでソートします。それを10 * N別々の セクションに分割します。データをアップロードする一連のワーカータスクを作成します。各 ワーカーは1つのパーティションに書き込みます。パーティション内では、従業員が行を順番に書き込むことが推奨されています( )。しかし、 パーティション内にランダムにデータを書き込むと、相当に高いスループットが になるはずです。
さらに多くのデータがアップロードされると、Cloud Spannerは自動的に を分割し、 インスタンス内のノードの負荷を分散するようにデータを再調整します。この処理中に、 のスループットが一時的に低下することがあります。
このパターンに従うと、1ノードあたり最大で全体のバルク書き込み スループットが10-20 MiB /秒になるはずです。
処理する前に大きなファイル全体をメモリにロードしようとしているようです。大きなファイルの場合は、全体ではなく、読み込みと処理のチャンクを調べる必要があります。私はノードのエキスパートに注意していますが、ストリームとして読み込み、すべてをメモリに保存しないでください。