Cha*_*les 1 google-cloud-storage google-bigquery google-cloud-datastore
关于此处的代码实验室,我们如何在mapreduce作业中过滤数据存储数据,而不是为某个实体类获取所有对象?
在下面的映射器管道定义中,唯一的一个输入读取器参数是要处理的实体类型,我无法在InputReader类中看到可能有用的其他类型filter参数.
output = yield mapreduce_pipeline.MapperPipeline(
"Datastore Mapper %s" % entity_type,
"main.datastore_map",
"mapreduce.input_readers.DatastoreInputReader",
output_writer_spec="mapreduce.output_writers.FileOutputWriter",
params={
"input_reader":{
"entity_kind": entity_type,
},
"output_writer":{
"filesystem": "gs",
"gs_bucket_name": GS_BUCKET,
"output_sharding":"none",
}
},
shards=100)
Run Code Online (Sandbox Code Playgroud)
由于Google BigQuery在非规范化数据模型中表现更好,因此能够从多个数据存储区实体类型(JOIN)构建一个表会很好,但我也看不到如何这样做?
根据您的应用程序,您可以通过传递过滤器参数来解决此问题,该参数是"可应用于查询的过滤器的可选列表.每个过滤器都是一个元组:( <property_name_as_str>, <query_operation_as_str>, <value>."
所以,在你的输入阅读器参数中:
"input_reader":{
"entity_kind": entity_type,
"filters": [("datastore_property", "=", 12345),
("another_datastore_property", ">", 200)]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |