def test_register_slot_sharing_group(self): slot_sharing_group_1 = SlotSharingGroup.builder('slot_sharing_group_1') \ .set_cpu_cores(1.0).set_task_heap_memory_mb(100).build() slot_sharing_group_2 = SlotSharingGroup.builder('slot_sharing_group_2') \ .set_cpu_cores(2.0).set_task_heap_memory_mb(200).build() slot_sharing_group_3 = SlotSharingGroup.builder( 'slot_sharing_group_3').build() self.env.register_slot_sharing_group(slot_sharing_group_1) self.env.register_slot_sharing_group(slot_sharing_group_2) self.env.register_slot_sharing_group(slot_sharing_group_3) ds = self.env.from_collection( [1, 2, 3]).slot_sharing_group('slot_sharing_group_1') ds.map(lambda x: x + 1).set_parallelism(3) \ .slot_sharing_group('slot_sharing_group_2') \ .add_sink(self.test_sink) j_generated_stream_graph = self.env._j_stream_execution_environment \ .getStreamGraph(True) j_resource_profile_1 = j_generated_stream_graph.getSlotSharingGroupResource( 'slot_sharing_group_1').get() j_resource_profile_2 = j_generated_stream_graph.getSlotSharingGroupResource( 'slot_sharing_group_2').get() j_resource_profile_3 = j_generated_stream_graph.getSlotSharingGroupResource( 'slot_sharing_group_3') self.assertEqual(j_resource_profile_1.getCpuCores().getValue(), 1.0) self.assertEqual( MemorySize(j_memory_size=j_resource_profile_1.getTaskHeapMemory()), MemorySize.of_mebi_bytes(100)) self.assertEqual(j_resource_profile_2.getCpuCores().getValue(), 2.0) self.assertEqual( MemorySize(j_memory_size=j_resource_profile_2.getTaskHeapMemory()), MemorySize.of_mebi_bytes(200)) self.assertFalse(j_resource_profile_3.isPresent())
def register_slot_sharing_group(self, slot_sharing_group: SlotSharingGroup) \ -> 'StreamExecutionEnvironment': """ Register a slot sharing group with its resource spec. Note that a slot sharing group hints the scheduler that the grouped operators CAN be deployed into a shared slot. There's no guarantee that the scheduler always deploy the grouped operators together. In cases grouped operators are deployed into separate slots, the slot resources will be derived from the specified group requirements. :param slot_sharing_group: Which contains name and its resource spec. :return: This object. """ self._j_stream_execution_environment = \ self._j_stream_execution_environment.registerSlotSharingGroup( slot_sharing_group.get_java_slot_sharing_group()) return self