Что касается библиотеки кода here, как мы можем фильтровать данные хранилища данных в заданиях mapreduce, а не извлекать все объекты для определенного типа сущности?Как фильтровать данные хранилища данных перед сопоставлением с облачным хранилищем с использованием API MapReduce?
В приведенном ниже определении конвейерного модуля единственным параметром считывателя ввода является вид объекта для обработки, и я не вижу других параметров фильтра типов в классе InputReader, которые могли бы помочь.
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)
Поскольку Google BigQuery играет лучше с unormalized модели данных, было бы неплохо, чтобы иметь возможность построить одну таблицы из нескольких видов хранилища сущностей (объединения), но я не могу видеть, как сделать это, а?
Спасибо Michael 1/Вы должны выполнить команду 'Svn update' на map_reduce поскольку, согласно бревнами СВН, эта функция была введена с 1 августа – Charles
2/It. кажется, прослушивается прямо сейчас, так как ваш список кортежей преобразуется в список списков, создающих BadRead Исключение erParamsError ** Фильтр должен быть кортежем ** (т.е. '[(" datastore_property "," = ", 12345), (" another_datastore_property ","> ", 200)]' становится '[[" datastore_property "," = ", 12345], [" another_datastore_property ","> ", 200]]'). Все еще рыть, чтобы найти, почему. – Charles
Кажется, что [эта проблема] (http://code.google.com/p/appengine-mapreduce/issues/detail?id=138&q=filter&colspec=ID%20Type%20Status%20Priority%20Component%20Owner%20Summary) уже было сообщено фактически – Charles