2016-12-26 6 views
0

Ich habe eine DataFlow-Pipeline lokal auf meinem Computer eingerichtet. Es dauert eine neue Zeile zeilenbegrenzte Datei voller JSON-Objekte, macht seine Sache, formatiert das Endergebnis in TableRow. Wenn es Zeit ist, in BigQuery zu schreiben, kann ich mich nicht authentifizieren. In der Dataflow-Dokumentation oder in Beispielen, in denen mit einer lokalen Pipeline nach BigQuery geschrieben wird, konnte ich nichts finden. Wenn möglich, würde ich gerne wissen, wie es geht. In meinem Kopf soll es so etwas wie entweder:Schreiben in BigQuery über lokalen DataFlow-Job

... 
session_windowed_items.apply(ParDo.of(new FormatAsTableRowFn())) 
     .apply(BigQueryIO.Write 
     .withCredentials/Token(SOME_TOKEN) // <- This line 
     .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_NEVER) 
     .to("project:db.table")); 
... 

oder

... 
PipelineOptions options = PipelineOptionsFactory.create(); 
options.setGoogleCloudCredentials/Token(SOME_TOKEN) // <- This line 
Pipeline p = Pipeline.create(options); 
... 

Antwort

2

Ihr zweiter Ansatz ist die richtige. Es wird in etwa so aussieht:

GcpOptions gcpOptions = options.as(GcpOptions.class); 
gcpOptions.setGcpCredential(...); 
gcpOptions.setProject(...); 
// etc 

Das Idiom von options.as(SomeSpecificOptions.class) ist daran zu erinnern.

Sie sollten über GcpOptions lesen, um die verfügbaren Methoden zu sehen.

Verwandte Themen