google-cloud-firestore - 在管道中将数据写入 Google Firestore
问题描述
我想通过带有 Apache Beam 的 Dataflow 运行器将数据从 Cloud BigQuery 读取到 Cloud Datastore。从文档来看,Firestore 尚不受支持。我编写自己的课程来做到这一点。
class UpdateIntoFireStore(beam.DoFn):
def process(self, element):
try:
cred = credentials.Certificate({
"..."
})
firebase_admin.initialize_app(cred, {
'projectId': '...',
})
except ValueError:
pass
db = firestore.client()
doc_ref = db.collection(u'poi')
doc_ref.add(element)
管道如下:
job = ( p | 'Read from BigQuery' >> Read(BigQuerySource(query="SELECT * FROM ...", use_standard_sql=True))
| 'Update to Firestore' >> beam.ParDo(UpdateIntoFireStore()))
这种方法好吗?我担心并行处理对 Cloud Firestore 上的这些写入操作的影响。
解决方案
这就像从数据流中进行外部调用一样。从技术上讲,这将起作用。但是,有几件事需要注意。
- 无法保证单个元素将被处理多少次,因此您可能会在 firestore 中获得同一元素的多个条目。
- 您将对 Firestore 的每个元素进行单独调用,并且没有缓存 Firestore 客户端/连接。
推荐阅读
- javascript - ng-repeat 和选定的行
- macos - 确定 NSBezierPath 边界以确保在 macOS 上正确重绘的正确方法是什么
- ibm-mobilefirst - IBM Mobilefirst 8 与 configure-tomcat-mysql.xml 配置文件有关的错误
- asp.net-core-mvc - ASP.net Core 2.1 MVC - 脚手架不使用标签助手?
- java - 如果文件没有已知的扩展名,我如何告诉 Java 使用系统的默认文本编辑器打开文件?
- jquery - Bootstrap 多选不会显示选项
- powershell - 将 Get-ADUser 的属性分配给没有标题的变量
- c# - Unity 中的 Photon 似乎无缘无故地实例化了两个玩家
- xcode - 录音机:默认扬声器播放
- javascript - 为什么我的 javascript 不能识别其中有换行符的字符串?