我想将大数据插入Google的Cloud Spanner表。
我正在使用node.js应用程序,但由于txt文件太大(几乎为2GB)而停止。
1.load txt file
2.逐行阅读
3.通过" |"
分割线4.build数据对象
5.将数据插入Cloud Spanner表
Mysql支持使用.sql文件插入数据。 Cloud Spanner是否也支持某种方式?
答案 0 :(得分:1)
Cloud Spanner目前不公开批量导入方法。听起来您计划单独插入每一行,这不是最佳方法。该文档包含efficient bulk loading的最佳(和最差)实践:
要获得批量加载的最佳写入吞吐量,请按以下方式对数据进行分区 具有此模式的主键:
每个分区都包含一系列连续的行。每次提交 仅包含单个分区的数据。一个很好的经验法则 您的分区数是您的节点数的10倍 Cloud Spanner实例。所以如果你有N个节点,总共10 * N. 分区,您可以通过以下方式将行分配给分区:
按主键排序数据。将它分成10 * N分开 部分。创建一组上载数据的工作任务。每 worker将写入单个分区。在分区内,它是 建议您的工作者按顺序写入行。然而, 在分区内随机写入数据也应该提供 合理的高吞吐量。
随着您的更多数据上传,Cloud Spanner会自动拆分 并重新平衡您的数据以平衡您的节点上的负载 实例。在此过程中,您可能会遇到暂时性下降 吞吐量。
遵循此模式,您应该看到最大的整体批量写入 每个节点每秒10-20 MiB的吞吐量。
在处理之前,您还试图将整个大文件加载到内存中。对于大型文件,您应该查看加载和处理块而不是整个文件。我注意到一个节点专家,但你应该尝试将其作为一个流阅读,而不是将所有内容保存在内存中。