2

Похоже, что google выпустила поддержку для запроса хранилища данных из потока данных/пучка в python. Я пытаюсь заставить его работать на месте, но я бегу на некоторые вопросы:Как запросить хранилище данных из потока данных/пучка в python

import apache_beam as beam 
from apache_beam.io.datastore.v1.datastoreio import ReadFromDatastore 
from gcloud import datastore 

client = datastore.Client('my-project') 
query = client.query(kind='Document') 

options = get_options() 
p = beam.Pipeline(options=options) 

entities = p | 'read' >> ReadFromDatastore(project='my-project', query=query) 
entities | 'write' >> beam.io.Write(beam.io.TextFileSink('gs://output.txt')) 

p.run() 

Это дает мне

AttributeError: 'Query' object has no attribute 'HasField' [while running 'read/Split Query'] 

Я предполагаю, что я передаю в заблуждении объект запроса (есть 3-4 пакета пакетов, из которых вы можете импортировать хранилище данных), но я не могу понять, какой из них я должен пройти. В тестах они проходят в protobuf. Это то, что я должен использовать? Может ли кто-нибудь показать простой пример запроса, используя protobuf, если это то, что я должен сделать?

+0

Hi Бувар, где вы бежите этот код? на движке приложения? консоль? или подключиться через командную строку на рабочем столе? У меня возникли проблемы с запуском по аналогичной проблеме. – Evan

+0

Командная строка на рабочем столе. – Bovard

ответ

1

wordcount example использует protobufs для запроса.

Похоже, что вам нужно что-то вроде:

from google.datastore.v1 import query_pb2 
... 
query = query_pb2.Query() 
query.kind.add().name = 'Document'