2017-01-23 3 views
0

Ich habe einen Schritt in einem Google DataFlow, wo ich Daten von einer externen Rate-limited API abrufen möchte. Gibt es eine Möglichkeit, die Daten gleichmäßig auf eine festgelegte Anzahl von Arbeitern aufzuteilen, um das Ratenlimit einzuhalten? (Sie müssen die Anzahl der Arbeiter kennen, um das Ratenlimit durch diese Nummer zu teilen).Google DataFlow - feste Anzahl von Arbeitern

Antwort

1

Die Antwort darauf hängt davon ab, ob die Pipeline über den Batch- oder Streaming Läufer läuft:

Batch: keine direkte Kontrolle dafür neben numWorkers und maxNumWorkers auf den gewünschten Wert einstellen. Dies wirkt sich jedoch auf die gesamte Pipeline aus, nicht nur auf die Stufe, in der die Rate begrenzt werden soll

Streaming: Mit der API UnboundedSource können Sie mit dem Aufruf generateInitialSplits() genau die Anzahl der parallelen Eingangsaufteilungen angeben, die Sie haben möchten. Dann kann jeder Split seiner eigenen lokalen Ratenbegrenzung folgen.

+0

In meiner Pipeline die API-Aufrufe sind der erste Schritt und wahrscheinlich auch die langsamste, so dass die Batch-Methode wird wahrscheinlich funktionieren, ohne zu viele Probleme zu erstellen. Ich werde es versuchen und sehen, wie es geht. –

Verwandte Themen