public PartitionedEvent copy() { PartitionedEvent copied = new PartitionedEvent(); copied.setEvent(this.getEvent()); copied.setPartition(this.partition); copied.setPartitionKey(this.partitionKey); return copied; }
@Override public PartitionedEvent deserialize(DataInput dataInput) throws IOException { PartitionedEvent event = new PartitionedEvent(); event.setPartitionKey(dataInput.readLong()); StreamEvent streamEvent = streamEventSerializer.deserialize(dataInput); event.setEvent(streamEvent); StreamPartition partition = streamPartitionSerializer.deserialize(dataInput); partition.setStreamId(streamEvent.getStreamId()); event.setPartition(partition); return event; } }
@Override public PartitionedEvent deserialize(DataInput dataInput) throws IOException { PartitionedEvent event = new PartitionedEvent(); event.setPartitionKey(dataInput.readLong()); StreamEvent streamEvent = streamEventSerializer.deserialize(dataInput); StreamPartition partition = streamPartitionSerializer.deserialize(dataInput); event.setEvent(streamEvent); partition.setStreamId(streamEvent.getStreamId()); event.setPartition(partition); return event; }
private PartitionedEvent readPartitionedEvent(DataInput2 in) throws IOException { PartitionedEvent event = new PartitionedEvent(); event.setPartitionKey(in.unpackLong()); int partitionHashCode = in.unpackInt(); if (partitionHashCode != 0 && hashCodePartitionDict.containsKey(partitionHashCode)) { event.setPartition(hashCodePartitionDict.get(partitionHashCode)); } int eventBytesLen = in.unpackInt(); if (eventBytesLen > 0) { byte[] eventBytes = new byte[eventBytesLen]; in.readFully(eventBytes); event.setEvent((StreamEvent) SerializableUtils.deserializeFromCompressedByteArray(eventBytes, "Deserialize event from bytes")); } return event; }
private Tuple createTuple(AlertBolt bolt, String version) throws IOException { GeneralTopologyContext context = mock(GeneralTopologyContext.class); int taskId = 1; when(context.getComponentId(taskId)).thenReturn("comp1"); when(context.getComponentOutputFields("comp1", TEST_STREAM)).thenReturn(new Fields("f0")); // case 1: bolt prepared but metadata not initialized (no bolt.onAlertBoltSpecChange) PartitionedEvent pe = new PartitionedEvent(); pe.setPartitionKey(1); pe.setPartition(createPartition()); StreamEvent streamEvent = new StreamEvent(); streamEvent.setStreamId(TEST_STREAM); streamEvent.setTimestamp(System.currentTimeMillis()); streamEvent.setMetaVersion(version); pe.setEvent(streamEvent); PartitionedEventSerializerImpl peSer = new PartitionedEventSerializerImpl(bolt); byte[] serializedEvent = peSer.serialize(pe); return new TupleImpl(context, Collections.singletonList(serializedEvent), taskId, TEST_STREAM); }
@Test public void testJavaSerialization() { PartitionedEvent partitionedEvent = new PartitionedEvent(); partitionedEvent.setPartitionKey(partitionedEvent.hashCode()); partitionedEvent.setPartition(createSampleStreamGroupbyPartition("sampleStream", Arrays.asList("name", "host"))); StreamEvent event = new StreamEvent(); event.setStreamId("sampleStream"); event.setTimestamp(System.currentTimeMillis()); event.setData(new Object[] {"CPU", "LOCALHOST", true, Long.MAX_VALUE, 60.0}); partitionedEvent.setEvent(event); int javaSerializationLength = SerializationUtils.serialize(partitionedEvent).length; LOG.info("Java serialization length: {}, event: {}", javaSerializationLength, partitionedEvent); int compactLength = 0; compactLength += "sampleStream".getBytes().length; compactLength += ByteUtils.intToBytes(partitionedEvent.getPartition().hashCode()).length; compactLength += ByteUtils.longToBytes(partitionedEvent.getTimestamp()).length; compactLength += "CPU".getBytes().length; compactLength += "LOCALHOST".getBytes().length; compactLength += 1; compactLength += ByteUtils.longToBytes(Long.MAX_VALUE).length; compactLength += ByteUtils.doubleToBytes(60.0).length; LOG.info("Compact serialization length: {}, event: {}", compactLength, partitionedEvent); Assert.assertTrue(compactLength * 20 < javaSerializationLength); }
pe.setPartitionKey(1); pe.setPartition(createPartition()); StreamEvent streamEvent = new StreamEvent();
private PartitionedEvent constructPE() { StreamEvent e = new StreamEvent(); e.setStreamId("testStreamId"); e.setTimestamp(1463159382000L); e.setData(data); StreamPartition sp = new StreamPartition(); List<String> col = new ArrayList<>(); col.add("host"); sp.setColumns(col); StreamSortSpec sortSpec = new StreamSortSpec(); sortSpec.setWindowMargin(30000); sortSpec.setWindowPeriod("PT1M"); sp.setSortSpec(sortSpec); sp.setStreamId("testStreamId"); sp.setType(StreamPartition.Type.GROUPBY); PartitionedEvent pe = new PartitionedEvent(); pe.setEvent(e); pe.setPartition(sp); pe.setPartitionKey(1000); return pe; }
sp.setType(StreamPartition.Type.GROUPBY); event1.setPartition(sp); event1.setPartitionKey(1000); StreamEvent e1 = new StreamEvent(); e1.setData(new Object[] {18.4}); event2.setPartitionKey(1000); StreamEvent e2 = new StreamEvent(); e2.setData(new Object[] {16.3}); event3.setPartitionKey(1000); StreamEvent e3 = new StreamEvent(); e3.setData(new Object[] {14.3}); event4.setPartitionKey(1000); StreamEvent e4 = new StreamEvent(); e4.setData(new Object[] {14.3});