public Object[] getData() { return event != null ? event.getData() : null; }
public Object[] getData(StreamDefinition streamDefinition, List<String> column) { ArrayList<Object> result = new ArrayList<>(column.size()); for (String colName : column) { result.add(this.getData()[streamDefinition.getColumnIndex(colName)]); } return result.toArray(); }
public Object[] getData(StreamDefinition streamDefinition, String... column) { ArrayList<Object> result = new ArrayList<>(column.length); for (String colName : column) { result.add(this.getData()[streamDefinition.getColumnIndex(colName)]); } return result.toArray(); } }
@Override public void send(StreamEvent event) throws Exception { Object[] data = event.getData(); List<Object> columnValues = new ArrayList<>(); for (int i = 0; i < wisbFieldIndices.size(); i++) { Object o = data[wisbFieldIndices.get(i)]; // convert value to string columnValues.add(o.toString()); } // use local timestamp rather than event timestamp distinctWindow.send(event, columnValues, System.currentTimeMillis()); LOG.debug("event sent to window with wiri: {}", distinctWindow.distinctValues()); }
protected List<StreamRoute> routeByGroupByKey(StreamEvent event) { int partitionKey = new HashCodeBuilder().append(event.getData(streamDefinition, this.streamPartition.getColumns())).build(); String selectedOutputStream = outputComponentIds.get(Math.abs(partitionKey) % this.outputComponentIds.size()); return Collections.singletonList(new StreamRoute(selectedOutputStream, partitionKey, StreamPartition.Type.GROUPBY)); }
@Override public String toString() { List<String> dataStrings = new ArrayList<>(); if (this.getData() != null) { for (Object obj : this.getData()) { if (obj != null) { dataStrings.add(obj.toString()); } else { dataStrings.add(null); } } } return String.format("StreamEvent[stream=%S,timestamp=%s,data=[%s],metaVersion=%s]", this.getStreamId(), DateTimeUtil.millisecondsToHumanDateWithMilliseconds(this.getTimestamp()), StringUtils.join(dataStrings, ","), this.getMetaVersion()); }
@SuppressWarnings("rawtypes") private void compareAndEmit(Set wisb, Set wiri, StreamEvent event) { // compare with wisbValues if wisbValues are already there for dynamic type Collection noDataValues = CollectionUtils.subtract(wisb, wiri); LOG.debug("nodatavalues:" + noDataValues + ", wisb: " + wisb + ", wiri: " + wiri); if (noDataValues != null && noDataValues.size() > 0) { LOG.info("No data alert is triggered with no data values {} and wisb {}", noDataValues, wisbValues); AlertStreamEvent alertEvent = createAlertEvent(event.getTimestamp(), event.getData()); collector.emit(alertEvent); } }
@Override public void send(StreamEvent event) throws Exception { Object[] data = event.getData(); List<Object> columnValues = new ArrayList<>(); for (int i = 0; i < expectFieldIndices.size(); i++) { Object o = data[expectFieldIndices.get(i)]; // convert value to string columnValues.add(o.toString()); } boolean isAbsenceAlert = driver.process(columnValues, event.getTimestamp()); // Publishing alerts. if (isAbsenceAlert) { AlertStreamEvent alertEvent = AlertStreamUtils.createAlertEvent(event, context, sds); collector.emit(alertEvent); } }
@SuppressWarnings( {"rawtypes", "unchecked"}) @Override public void send(StreamEvent event) throws Exception { Object[] data = event.getData(); List<Object> columnValues = new ArrayList<>(); for (int i = 0; i < wisbFieldIndices.size(); i++) { Object o = data[wisbFieldIndices.get(i)]; // convert value to string columnValues.add(o.toString()); } distinctWindow.send(columnValues, event.getTimestamp()); Set wiriValues = distinctWindow.distinctValues().keySet(); LOG.debug("window slided: {}, with wiri: {}", distinctWindow.windowSlided(), distinctWindow.distinctValues()); if (distinctWindow.windowSlided()) { compareAndEmit(wisbValues, wiriValues, event); } if (wisbType == NoDataWisbType.dynamic) { // deep copy wisbValues = new HashSet<>(wiriValues); } }
public static PartitionedEvent createRandomOutOfTimeOrderEventGroupedByName(String streamId) { StreamEvent event = createRandomStreamEvent(streamId); event.setTimestamp(System.currentTimeMillis() + TIME_DELTA_OPTIONS[RANDOM.nextInt(TIME_DELTA_OPTIONS.length)]); return new PartitionedEvent(event, createSampleStreamGroupbyPartition(streamId, Arrays.asList("name")), event.getData()[0].hashCode()); }
public static PartitionedEvent createRandomPartitionedEvent(String streamId, long timestamp) { StreamEvent event = createRandomStreamEvent(streamId, timestamp); PartitionedEvent partitionedEvent = new PartitionedEvent(event, createSampleStreamGroupbyPartition(streamId, Arrays.asList("name")), event.getData()[0].hashCode()); return partitionedEvent; } }
public static PartitionedEvent createPartitionedEventGroupedByName(String streamId, long timestamp) { StreamEvent event = createRandomStreamEvent(streamId); event.setTimestamp(timestamp); return new PartitionedEvent(event, createSampleStreamGroupbyPartition(streamId, Arrays.asList("name")), event.getData()[0].hashCode()); }
public static PartitionedEvent createRandomSortedEventGroupedByName(String streamId) { StreamEvent event = createRandomStreamEvent(streamId); event.setTimestamp(System.currentTimeMillis()); return new PartitionedEvent(event, createSampleStreamGroupbyPartition(streamId, Arrays.asList("name")), event.getData()[0].hashCode()); }
public void send(StreamEvent event) throws Exception { context.getPolicyCounter().incr(String.format("%s.%s", this.context.getPolicyDefinition().getName(), "receive_count")); String streamId = event.getStreamId(); InputHandler inputHandler = executionRuntime.getInputHandler(streamId); if (inputHandler != null) { context.getPolicyCounter().incr(String.format("%s.%s", this.context.getPolicyDefinition().getName(), "eval_count")); inputHandler.send(event.getTimestamp(), event.getData()); if (LOG.isDebugEnabled()) { LOG.debug("sent event to siddhi stream {} ", streamId); } } else { context.getPolicyCounter().incr(String.format("%s.%s", this.context.getPolicyDefinition().getName(), "drop_count")); LOG.warn("No input handler found for stream {}", streamId); } }
public void copyFrom(StreamEvent event) { this.setTimestamp(event.getTimestamp()); this.setData(event.getData()); this.setStreamId(event.getStreamId()); this.setMetaVersion(event.getMetaVersion()); }
/** * Create alert stream event for publisher. */ public static AlertStreamEvent createAlertEvent(StreamEvent event, PolicyHandlerContext context, Map<String, StreamDefinition> sds) { PolicyDefinition policyDef = context.getPolicyDefinition(); AlertStreamEvent alertStreamEvent = new AlertStreamEvent(); alertStreamEvent.setTimestamp(event.getTimestamp()); alertStreamEvent.setData(event.getData()); alertStreamEvent.setStreamId(policyDef.getOutputStreams().get(0)); alertStreamEvent.setPolicyId(policyDef.getName()); if (context.getPolicyEvaluator() != null) { alertStreamEvent.setCreatedBy(context.getPolicyEvaluator().getName()); } alertStreamEvent.setCreatedTime(System.currentTimeMillis()); String is = policyDef.getInputStreams().get(0); StreamDefinition sd = sds.get(is); alertStreamEvent.setSchema(sd); return alertStreamEvent; } }
/** * @return cloned new event object. */ public StreamEvent copy() { StreamEvent newEvent = new StreamEvent(); newEvent.setTimestamp(this.getTimestamp()); newEvent.setData(this.getData()); newEvent.setStreamId(this.getStreamId()); newEvent.setMetaVersion(this.getMetaVersion()); return newEvent; }
@Test public void testStreamEvent1() { thrown.expect(IndexOutOfBoundsException.class); List<StreamColumn> streamColumns = new ArrayList<>(); streamColumns.add(new StreamColumn.Builder().name("name").type(StreamColumn.Type.STRING).build()); streamColumns.add(new StreamColumn.Builder().name("host").type(StreamColumn.Type.STRING).build()); streamColumns.add(new StreamColumn.Builder().name("flag").type(StreamColumn.Type.BOOL).build()); streamColumns.add(new StreamColumn.Builder().name("value").type(StreamColumn.Type.DOUBLE).build()); streamColumns.add(new StreamColumn.Builder().name("data").type(StreamColumn.Type.LONG).build()); streamColumns.add(new StreamColumn.Builder().name("salary").type(StreamColumn.Type.FLOAT).build()); streamColumns.add(new StreamColumn.Builder().name("object").type(StreamColumn.Type.OBJECT).build()); streamColumns.add(new StreamColumn.Builder().name("int").type(StreamColumn.Type.INT).build()); StreamDefinition streamDefinition = new StreamDefinition(); streamDefinition.setColumns(streamColumns); StreamEvent streamEvent = new StreamEvent(); streamEvent.setData(new Object[]{"namevalue", "hostvalue", "1", 10.0, 1, -0.2, "{\"name\":\"heap.COMMITTED\", \"Value\":\"175636480\"}\"", 4}); streamEvent.getData(streamDefinition, "salary", "isYhd"); }
@Test public void testStreamEvent2() { thrown.expect(IndexOutOfBoundsException.class); List<StreamColumn> streamColumns = new ArrayList<>(); streamColumns.add(new StreamColumn.Builder().name("name").type(StreamColumn.Type.STRING).build()); streamColumns.add(new StreamColumn.Builder().name("host").type(StreamColumn.Type.STRING).build()); streamColumns.add(new StreamColumn.Builder().name("flag").type(StreamColumn.Type.BOOL).build()); streamColumns.add(new StreamColumn.Builder().name("value").type(StreamColumn.Type.DOUBLE).build()); streamColumns.add(new StreamColumn.Builder().name("data").type(StreamColumn.Type.LONG).build()); streamColumns.add(new StreamColumn.Builder().name("salary").type(StreamColumn.Type.FLOAT).build()); streamColumns.add(new StreamColumn.Builder().name("object").type(StreamColumn.Type.OBJECT).build()); streamColumns.add(new StreamColumn.Builder().name("int").type(StreamColumn.Type.INT).build()); StreamDefinition streamDefinition = new StreamDefinition(); streamDefinition.setColumns(streamColumns); StreamEvent streamEvent = new StreamEvent(); streamEvent.setData(new Object[]{"namevalue", "hostvalue", "1", 10.0, 1, -0.2, "{\"name\":\"heap.COMMITTED\", \"Value\":\"175636480\"}\""}); streamEvent.getData(streamDefinition, "salary", "int"); }
@Test public void testStreamEvent3() { List<StreamColumn> streamColumns = new ArrayList<>(); streamColumns.add(new StreamColumn.Builder().name("name").type(StreamColumn.Type.STRING).build()); streamColumns.add(new StreamColumn.Builder().name("host").type(StreamColumn.Type.STRING).build()); streamColumns.add(new StreamColumn.Builder().name("flag").type(StreamColumn.Type.BOOL).build()); streamColumns.add(new StreamColumn.Builder().name("value").type(StreamColumn.Type.DOUBLE).build()); streamColumns.add(new StreamColumn.Builder().name("data").type(StreamColumn.Type.LONG).build()); streamColumns.add(new StreamColumn.Builder().name("salary").type(StreamColumn.Type.FLOAT).build()); streamColumns.add(new StreamColumn.Builder().name("object").type(StreamColumn.Type.OBJECT).build()); streamColumns.add(new StreamColumn.Builder().name("int").type(StreamColumn.Type.INT).build()); StreamDefinition streamDefinition = new StreamDefinition(); streamDefinition.setColumns(streamColumns); StreamEvent streamEvent = new StreamEvent(); streamEvent.setData(new Object[]{"namevalue", 1, "flag", 10.0, 0.1, -0.2, "{\"name\":\"heap.COMMITTED\", \"Value\":\"175636480\"}\"", 1}); Object[] values = streamEvent.getData(streamDefinition, "value", "host"); Assert.assertEquals(10.0, values[0]); Assert.assertEquals(1, values[1]); }