2017-10-11 24 views
0

我正在使用Java SDK 1.9.1版中的數據流。 我需要從數據存儲中讀取某種類型的數據,使用DataStoreIO並創建一個PCollection <實體>。我使用TemplateRunner運行數據流作業。當模板啓動時,我需要讀取的那種名稱將通過PipelineOptions傳入。 (即,在構建圖時不知道) 如何使用ValueProvider爲類名創建KindExpression。對DatastoreIO使用ValueProvider .Read

例如,我可以這樣做,如果名稱在圖構建時已知 -

KindExpression k = KindExpression.newBuilder().setName("abc").build() 
PCollection<Entity> myentities = pipeline.apply(DatastoreIO.v1().read().withProjectId("my-project").withQuery(Query.newBuilder().addKind(k).build())); 

如何在構建查詢時提前不知道名稱。例如,TEXTIO有規定使用「withoutValidation」

PCollection<String> mergeRuleTemplateString = pipeline 
      .apply(TextIO.Read.from(options.getInputFile()).withoutValidation()); 

是否有DataStoreIO

回答

1

是類似的東西,但不是在1.9.1 - 對ValueProvider支持加入DatastoreIO在2.0.0( JIRA BEAM-1076)。請注意,它目前僅支持字面GQL查詢,通過.withLiteralGqlQuery(ValueProvider<String>)javadoc)。

+0

謝謝,尤金! – Venky