Refine search
@Override public void updateState(WindowsState state, List<TridentTuple> tuples, TridentCollector collector) { Long currentTxId = state.getCurrentTxId(); LOG.debug("Removing triggers using WindowStateUpdater, txnId: [{}] ", currentTxId); for (TridentTuple tuple : tuples) { try { Object fieldValue = tuple.getValueByField(WindowTridentProcessor.TRIGGER_FIELD_NAME); if (!(fieldValue instanceof WindowTridentProcessor.TriggerInfo)) { throw new IllegalClassException(WindowTridentProcessor.TriggerInfo.class, fieldValue.getClass()); } WindowTridentProcessor.TriggerInfo triggerInfo = (WindowTridentProcessor.TriggerInfo) fieldValue; String triggerCompletedKey = WindowTridentProcessor.getWindowTriggerInprocessIdPrefix(triggerInfo.windowTaskId) + currentTxId; LOG.debug("Removing trigger key [{}] and trigger completed key [{}] from store: [{}]", triggerInfo, triggerCompletedKey, windowsStore); windowsStore.removeAll(Lists.newArrayList(triggerInfo.generateTriggerKey(), triggerCompletedKey)); } catch (Exception ex) { LOG.warn(ex.getMessage()); collector.reportError(ex); throw new FailedException(ex); } } }
@Override public void execute(TridentTuple tuple, TridentCollector tridentCollector) { try { String asString = new String((byte[]) tuple.getValueByField("bytes"), "UTF-8"); tridentCollector.emit(new Values(asString)); } catch (UnsupportedEncodingException e) { System.err.println("ERROR: lost data: unable to parse inbound message from Kafka (expecting UTF-8 string)"); e.printStackTrace(); } } }
public void execute(TridentTuple tuple, TridentCollector collector) { int secs = tuple.getInteger(0); int hourBucket = secs / HOUR_SECS; collector.emit(new Values(hourBucket)); } }
public void execute(TridentTuple tuple, TridentCollector collector) { boolean val = tuple.getBoolean(0); if(val) { collector.emit(new Values(1)); } else { collector.emit(new Values(0)); } } }
TridentCollector collector) { for(TridentTuple t: tuples) { final String domain = t.getString(0); final PersonID user = (PersonID) t.get(1); final int timestampSecs = t.getInteger(2); Visit v = new Visit(domain, user); update(state, v, new ValueUpdater<VisitInfo>() { if(info.startTimestamp == info.lastVisitTimestamp) { collector.emit(new Values(domain, true)); } else { collector.emit(new Values(domain, false));
@Override public void execute(TridentTuple tuple, TridentCollector collector) { String splitId = tuple.getStringByField(splitField); Classifier classifier = classifierMap.get(splitId); if (classifier != null) { String label = classifier.classifyTuple(tuple); collector.emit(new Values(label)); } else { String message = String.format( "unknown experimental split ID [ %s ]", splitId); LOG.error(message); throw new PatternException(message); } } }
@Override public void execute(TridentTuple tuple, TridentCollector collector) { try { writeTuple(tuple); if (this.valueToEmit != null) { collector.emit(new Values(this.valueToEmit)); } } catch (TupleMappingException e) { LOG.error("Skipping tuple: " + tuple, e); } catch (StormCassandraException e) { LOG.error("Failed to write tuple. Exception: " + e.getLocalizedMessage()); // This will tell storm to replay the whole batch // TODO should we add a number of retry here? throw new FailedException(); } catch (Exception e) { LOG.error("Unexcepted exception: " + e.getLocalizedMessage()); // unexpected error should not be replayed. Log only collector.reportError(e); } }
@Override public void aggregate(State val, TridentTuple tuple, TridentCollector collector) { if (val.emitted < _n) { collector.emit(tuple); val.emitted++; } }
@Override public void complete(State state, TridentCollector collector) { log.debug("Completed comparison aggregation for batch [{}] with resultant tuple: [{}] in operation [{}]", batchId, state.previousTuple, this); collector.emit(state.previousTuple != null ? state.previousTuple.getValues() : null); } }
@Override public void execute(TridentTuple tuple, TridentCollector collector) { Tweet tweet = (Tweet) tuple.getValue(0); String tweetBody = tweet.getBody(); String words[] = tweetBody.toLowerCase().split(regex); if (words.length > 0) { collector.emit(getValues(tweet, words)); } else { tweetBody = "ONLYLINKSANDMENTIONZ"; String dummyWord[] = {tweetBody}; collector.emit(getValues(tweet, dummyWord)); } }
@Override public void reportError(Throwable t) { _coll.reportError(t); } }
@Override public void updateState(Snapshottable state, List<TridentTuple> tuples, TridentCollector collector) { if (tuples.size() != 1) { throw new IllegalArgumentException("Combiner state updater should receive a single tuple. Received: " + tuples.toString()); } Object newVal = state.update(new CombinerValueUpdater(_agg, tuples.get(0).getValue(0))); collector.emit(new Values(newVal)); }
public void execute(TridentTuple tuple, TridentCollector collector) { LocationChangedEvent event = (LocationChangedEvent) tuple.getValueByField("occupancyEvent"); collector.emit(new Values(event.getCorrId())); } }