# specific language governing permissions and limitations # under the License. '''join_streamlet_topology.py: module is an example of how to use the join operator''' import sys from heronpy.streamlet.builder import Builder from heronpy.streamlet.runner import Runner from heronpy.streamlet.config import Config from heronpy.streamlet.windowconfig import WindowConfig from heronpy.connectors.mock.arraylooper import ArrayLooper # pylint: disable=superfluous-parens if __name__ == '__main__': if len(sys.argv) != 2: print("Topology's name is not specified") sys.exit(1) builder = Builder() source_1 = builder.new_source(ArrayLooper([["key1", "a"], ["key1", "b"]], sleep=1)) source_2 = builder.new_source(ArrayLooper([["key1", "c"], ["key1", "d"]], sleep=1)) source_1.join(source_2, WindowConfig.create_sliding_window(2, 1), lambda x, y: x + y).log() runner = Runner() config = Config() runner.run(sys.argv[1], config, builder)
'''join_streamlet_topology.py: module is an example of how to use the join operator''' import sys from heronpy.streamlet.builder import Builder from heronpy.streamlet.runner import Runner from heronpy.streamlet.config import Config from heronpy.streamlet.windowconfig import WindowConfig from heronpy.connectors.mock.arraylooper import ArrayLooper # pylint: disable=superfluous-parens if __name__ == '__main__': if len(sys.argv) != 2: print("Topology's name is not specified") sys.exit(1) builder = Builder() source_1 = builder.new_source( ArrayLooper([["key1", "a"], ["key1", "b"]], sleep=1)) source_2 = builder.new_source( ArrayLooper([["key1", "c"], ["key1", "d"]], sleep=1)) source_1.join(source_2, WindowConfig.create_sliding_window(2, 1), lambda x, y: x + y).log() runner = Runner() config = Config() runner.run(sys.argv[1], config, builder)
class SlowGenerator1(SlowGenerator): def get(self): sleep(1) return choice(self._words) class SlowGenerator2(SlowGenerator): def get(self): sleep(1.5) return (choice(self._words), choice(self._words)) from heronpy.streamlet.builder import Builder from heronpy.streamlet.config import Config from heronpy.streamlet.runner import Runner if __name__ == '__main__': builder = Builder() stream_1 = builder.new_source(SlowGenerator1()) stream_2 = builder.new_source(SlowGenerator2()) stream_3 = stream_1.map(lambda x: x + " !!!") stream_4 = stream_2 \ .map(lambda x: x[0] + " & " + x[1] + " !!!") stream_3.union(stream_4).map(lambda x: x + " !!!").log() Runner().run("my-python-streamlet", Config(), builder)