Search in sources :

Example 1 with LocalStreamEnvironment

use of org.apache.flink.streaming.api.environment.LocalStreamEnvironment in project flink by apache.

the class DataStreamUtils method collect.

/**
	 * Returns an iterator to iterate over the elements of the DataStream.
	 * @return The iterator
	 */
public static <OUT> Iterator<OUT> collect(DataStream<OUT> stream) throws IOException {
    TypeSerializer<OUT> serializer = stream.getType().createSerializer(stream.getExecutionEnvironment().getConfig());
    SocketStreamIterator<OUT> iter = new SocketStreamIterator<OUT>(serializer);
    //Find out what IP of us should be given to CollectSink, that it will be able to connect to
    StreamExecutionEnvironment env = stream.getExecutionEnvironment();
    InetAddress clientAddress;
    if (env instanceof RemoteStreamEnvironment) {
        String host = ((RemoteStreamEnvironment) env).getHost();
        int port = ((RemoteStreamEnvironment) env).getPort();
        try {
            clientAddress = ConnectionUtils.findConnectingAddress(new InetSocketAddress(host, port), 2000, 400);
        } catch (Exception e) {
            throw new IOException("Could not determine an suitable network address to " + "receive back data from the streaming program.", e);
        }
    } else if (env instanceof LocalStreamEnvironment) {
        clientAddress = InetAddress.getLoopbackAddress();
    } else {
        try {
            clientAddress = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            throw new IOException("Could not determine this machines own local address to " + "receive back data from the streaming program.", e);
        }
    }
    DataStreamSink<OUT> sink = stream.addSink(new CollectSink<OUT>(clientAddress, iter.getPort(), serializer));
    // It would not work if multiple instances would connect to the same port
    sink.setParallelism(1);
    (new CallExecute(env, iter)).start();
    return iter;
}
Also used : LocalStreamEnvironment(org.apache.flink.streaming.api.environment.LocalStreamEnvironment) RemoteStreamEnvironment(org.apache.flink.streaming.api.environment.RemoteStreamEnvironment) UnknownHostException(java.net.UnknownHostException) InetSocketAddress(java.net.InetSocketAddress) IOException(java.io.IOException) IOException(java.io.IOException) UnknownHostException(java.net.UnknownHostException) StreamExecutionEnvironment(org.apache.flink.streaming.api.environment.StreamExecutionEnvironment) InetAddress(java.net.InetAddress)

Aggregations

IOException (java.io.IOException)1 InetAddress (java.net.InetAddress)1 InetSocketAddress (java.net.InetSocketAddress)1 UnknownHostException (java.net.UnknownHostException)1 LocalStreamEnvironment (org.apache.flink.streaming.api.environment.LocalStreamEnvironment)1 RemoteStreamEnvironment (org.apache.flink.streaming.api.environment.RemoteStreamEnvironment)1 StreamExecutionEnvironment (org.apache.flink.streaming.api.environment.StreamExecutionEnvironment)1