2

看起來像谷歌已經發布了支持從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個可以導入數據存儲區的pip包),但我無法弄清楚我應該通過哪一個。在測試中,它們傳遞的是protobuf。那是我必須使用的嗎?任何人都可以使用protobuf顯示一個簡單的示例查詢,如果這是我必須做的?

+0

嗨布瓦爾,你在哪裏運行該代碼?在應用程序引擎?安慰?或通過桌面上的命令行連接?我在開始類似問題時遇到問題 – Evan

+0

桌面上的命令行。 – Bovard

回答

1

wordcount example使用protobufs進行查詢。

看起來像你需要的東西,如:

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