import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;

public class AmountsThreshold {

    // bei den VM-Argumenten --add-opens=java.base/java.nio=ALL-UNNAMED setzen, wenn das
    // Programm mit einer InaccessibleObjectException abstürzt
    // und bei Flink 1.15 dann zusätzlich noch: --add-opens=java.base/java.util=ALL-UNNAMED

    public static void main(String[] args) throws Exception {
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        DataSet<Integer> amounts = env.fromElements(1, 29, 40, 50);
        int threshold = 30;

        amounts
                .filter(a -> a > threshold)
                .reduce((input, sum) -> input + sum)
                //.writeAsXXX anstatt von print in Datei speichern
                //.collect() im Programm weiterverwenden (vgl. Stream API)
                .print();
    }

}
