0

大きなデータをGoogleのCloud Spanner Tableに挿入したい。大きなデータをCloud Spannerテーブルに挿入

これはnode.jsアプリでやっていることですが、txtファイルが大きすぎる(ほぼ2GB)ため停止します。 "|" 行

によって

1.loadのtxtファイル

2.readラインがでラインを3.split

4.buildデータが

クラウドスパナテーブルに

5.insertデータオブジェクトMySQLは.sqlファイルとのデータの挿入をサポートしています。 Cloud Spannerは多種多様な方法をサポートしていますか?

答えて

1

Cloud Spannerでは現在、一括インポートメソッドが公開されていません。あなたは個々の行を個別に挿入するように思えますが、これは最適な方法ではありません。ドキュメントはefficient bulk loadingのための最高の(と悪い)慣行があります

バルクロードに最適な書き込みスループットを取得するには、このパターンと 主キーで、あなたのデータを分割:

各パーティションは連続した行の範囲が含まれています。各コミット には、1つのパーティションのみのデータが含まれています。 のパーティション数は、 Cloud Spannerインスタンスのノード数の10倍です。したがって、N個のノードがあり、合計で10 * N のパーティションがある場合は、次の方法でパーティションに行を割り当てることができます。

データを主キーでソートします。それを10 * N別々の セクションに分割します。データをアップロードする一連のワーカータスクを作成します。各 ワーカーは1つのパーティションに書き込みます。パーティション内では、従業員が行を順番に書き込むことが推奨されています( )。しかし、 パーティション内にランダムにデータを書き込むと、相当に高いスループットが になるはずです。

さらに多くのデータがアップロードされると、Cloud Spannerは自動的に を分割し、 インスタンス内のノードの負荷を分散するようにデータを再調整します。この処理中に、 のスループットが一時的に低下することがあります。

このパターンに従うと、1ノードあたり最大で全体のバルク書き込み スループットが10-20 MiB /秒になるはずです。

処理する前に大きなファイル全体をメモリにロードしようとしているようです。大きなファイルの場合は、全体ではなく、読み込みと処理のチャンクを調べる必要があります。私はノードのエキスパートに注意していますが、ストリームとして読み込み、すべてをメモリに保存しないでください。

関連する問題