将大数据插入Cloud Spanner表

时间:2017-02-20 08:20:58

标签: mysql node.js database google-cloud-platform google-cloud-spanner

我想将大数据插入Google的Cloud Spanner表。

我正在使用node.js应用程序,但由于txt文件太大(几乎为2GB)而停止。

  

1.load txt file

     

2.逐行阅读

     

3.通过" |"

分割线      

4.build数据对象

     

5.将数据插入Cloud Spanner表

Mysql支持使用.sql文件插入数据。 Cloud Spanner是否也支持某种方式?

1 个答案:

答案 0 :(得分:1)

Cloud Spanner目前不公开批量导入方法。听起来您计划单独插入每一行,这不是最佳方法。该文档包含efficient bulk loading的最佳(和最差)实践:

  

要获得批量加载的最佳写入吞吐量,请按以下方式对数据进行分区   具有此模式的主键:

     

每个分区都包含一系列连续的行。每次提交   仅包含单个分区的数据。一个很好的经验法则   您的分区数是您的节点数的10倍   Cloud Spanner实例。所以如果你有N个节点,总共10 * N.   分区,您可以通过以下方式将行分配给分区:

     

按主键排序数据。将它分成10 * N分开   部分。创建一组上载数据的工作任务。每   worker将写入单个分区。在分区内,它是   建议您的工作者按顺序写入行。然而,   在分区内随机写入数据也应该提供   合理的高吞吐量。

     

随着您的更多数据上传,Cloud Spanner会自动拆分   并重新平衡您的数据以平衡您的节点上的负载   实例。在此过程中,您可能会遇到暂时性下降   吞吐量。

     

遵循此模式,您应该看到最大的整体批量写入   每个节点每秒10-20 MiB的吞吐量。

在处理之前,您还试图将整个大文件加载到内存中。对于大型文件,您应该查看加载和处理块而不是整个文件。我注意到一个节点专家,但你应该尝试将其作为一个流阅读,而不是将所有内容保存在内存中。