3

Google は、Python で dataflow/beam からデータストアをクエリするためのサポートをリリースしたようです。ローカルで実行しようとしていますが、いくつかの問題が発生しています。

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 個の pip パッケージがあります) が、どれを渡すべきかわかりません。テストでは、彼らはprotobufを渡しています。それは私が使用しなければならないものですか?それが私がしなければならないことである場合、誰でもprotobufを使用した簡単なクエリの例を示すことができますか?

4

1 に答える 1

2

wordcountのでは、クエリに protobufs を使用しています。

次のようなものが必要なようです:

from google.datastore.v1 import query_pb2
...
query = query_pb2.Query()
query.kind.add().name = 'Document'
于 2016-12-14T06:00:28.687 に答える