2017-11-27 3 views
2

Ich habe eine Apache Beam-Pipeline erfolgreich als Dataflow-Vorlage ausgeführt. Ich habe jedoch eine Optionsklasse (die DataflowPipelineOptions erweitert). Diese Klasse hat Argumente von Pom oder der Befehlszeilenschnittstelle erhalten, wenn die Vorlage generiert wird. Ich würde gerne wissen, ob eine Klasse existiert, damit ich diese Parameter direkt aus der Eigenschaftendatei laden kann. Auf diese Weise wäre es einfacher, von Umgebung zu Umgebung zu wechseln und es wäre saubererApache Beam Optionen von Property-Datei

Antwort

2

Ich bin mir nicht sicher, ob ich Ihre Frage verstehe. Ich denke, dass Sie fragen, ob es eine Möglichkeit gibt, Standardvorlagenparameter an Werte zu binden, die von einer Ressourcendatei anstatt von der Befehlszeile oder pom.xml-Datei bereitgestellt werden.

Parameter, die als PipelineOptions angegeben sind, können mit @Default.InstanceFactory kommentiert werden, um eine vom Benutzer bereitgestellte Factory-Methode zum Generieren von Standardwerten für einen Parameter anzugeben. Damit könnten Sie den Standardwert aus einer Ressourcendatei innerhalb Ihrer DefaultValueFactory Implementierung lesen.

Ein Beispiel sehen Sie, wie WindowedWordCountDefaultToCurrentSystemTime definiert ein annotiert die minTimestampMillis Parameter:

/** A {@link DefaultValueFactory} that returns the current system time. */ 
public static class DefaultToCurrentSystemTime implements DefaultValueFactory<Long> { 
    @Override 
    public Long create(PipelineOptions options) { 
    return System.currentTimeMillis(); 
    } 
} 

@Description("Minimum randomly assigned timestamp, in milliseconds-since-epoch") 
@Default.InstanceFactory(DefaultToCurrentSystemTime.class) 
Long getMinTimestampMillis(); 
void setMinTimestampMillis(Long value);