每小时高效地从Datastore导入数据到BigQuery - Python
目前,我正在使用谷歌的两步法来备份数据存储,然后再把它导入到BigQuery中。我也查看了使用管道的代码。这两种方法都不太高效,而且每次导入时都要处理所有数据,成本很高。我只需要添加上次导入后新增的记录。
那么,正确的做法是什么呢?有没有用Python实现的示例?
2 个回答
2
我不知道有没有完整的示例,但我觉得下面的步骤可能对你有帮助:
1- 你需要给你的数据添加一个“最后修改时间”的字段,并且要定期更新这个字段。
2- 每小时你可以运行一个MapReduce任务,在这个任务中,你的“映射器”可以设置一个过滤器,检查最后更新时间,只处理那些在过去一小时内更新过的数据。
3- 手动把需要备份的内容添加到你的备份中。
正如我所说,这只是一个大概念,具体的实现需要写很多代码。老实说,我觉得这不太适合在Stack Overflow上讨论。
3
你可以看看 流式插入。我现在其实也在用Java做类似的事情。
如果你想每小时执行一次,可以考虑在每次把新数据放到Datastore时,把这些数据添加到一个拉取队列中(可以是序列化的实体或者是键/ID)。然后你可以通过一个定时任务每小时处理这个队列。