import heron.api.src.python.api_constants as constants
from heron.api.src.python.topology import TopologyBuilder
from heron.api.src.python.streams import Grouping

from heron.examples.src.python.spout import WordSpout
from heron.examples.src.python.bolt import HalfAckBolt

# Topology is defined using a topology builder
# Refer to multi_stream_topology for defining a topology by subclassing Topology
if __name__ == '__main__':
  if len(sys.argv) != 2:
    print "Topology's name is not specified"
    sys.exit(1)

  builder = TopologyBuilder(name=sys.argv[1])

  word_spout = builder.add_spout("word_spout", WordSpout, par=2)
  half_ack_bolt = builder.add_bolt("half_ack_bolt", HalfAckBolt, par=2,
                                   inputs={word_spout: Grouping.fields('word')},
                                   config={constants.TOPOLOGY_TICK_TUPLE_FREQ_SECS: 10})

  topology_config = {constants.TOPOLOGY_RELIABILITY_MODE:
                     constants.TopologyReliabilityMode.ATLEAST_ONCE,
                     constants.TOPOLOGY_MAX_SPOUT_PENDING: 100000000,
                     constants.TOPOLOGY_MESSAGE_TIMEOUT_SECS: 300}

  builder.set_config(topology_config)

  builder.build_and_submit()
Exemple #2
0
import heron.api.src.python.api_constants as constants
from heron.api.src.python.topology import TopologyBuilder
from heron.api.src.python.streams import Grouping
from heron.examples.src.python.spout import StatefulWordSpout
from heron.examples.src.python.bolt import StatefulCountBolt

# Topology is defined using a topology builder
# Refer to multi_stream_topology for defining a topology by subclassing Topology
if __name__ == '__main__':
    if len(sys.argv) != 2:
        print "Topology's name is not specified"
        sys.exit(1)

    builder = TopologyBuilder(name=sys.argv[1])

    word_spout = builder.add_spout("word_spout", StatefulWordSpout, par=2)
    count_bolt = builder.add_bolt(
        "count_bolt",
        StatefulCountBolt,
        par=2,
        inputs={word_spout: Grouping.fields('word')},
        config={constants.TOPOLOGY_TICK_TUPLE_FREQ_SECS: 10})

    topology_config = {
        constants.TOPOLOGY_RELIABILITY_MODE:
        constants.TopologyReliabilityMode.EXACTLY_ONCE,
        constants.TOPOLOGY_STATEFUL_CHECKPOINT_INTERVAL_SECONDS: 30
    }
    builder.set_config(topology_config)

    builder.build_and_submit()