/** * Gets the declared output fields for the specified stream id for the component this task is a part of. */ public Fields getThisOutputFields(String streamId) { return getComponentOutputFields(getThisComponentId(), streamId); }
private Fields getSourceOutputFields(TopologyContext context, String sourceStream) { for (GlobalStreamId g : context.getThisSources().keySet()) { if (g.get_streamId().equals(sourceStream)) { return context.getComponentOutputFields(g); } } throw new RuntimeException("Could not find fields for source stream " + sourceStream); }
/** * Gets the declared input fields for this component. * * @return A map from sources to streams to fields. */ public Map<String, Map<String, List<String>>> getThisInputFields() { Map<String, Map<String, List<String>>> outputMap = new HashMap<>(); for (Map.Entry<GlobalStreamId, Grouping> entry : this.getThisSources().entrySet()) { String componentId = entry.getKey().get_componentId(); Set<String> streams = getComponentStreams(componentId); for (String stream : streams) { Map<String, List<String>> streamFieldMap = outputMap.get(componentId); if (streamFieldMap == null) { streamFieldMap = new HashMap<>(); outputMap.put(componentId, streamFieldMap); } streamFieldMap.put(stream, getComponentOutputFields(componentId, stream).toList()); } } return outputMap; }
@Override public void prepare(Map<String, Object> conf, TopologyContext context, OutputCollector collector) { _fieldLocations = new HashMap<String, GlobalStreamId>(); _collector = collector; int timeout = ((Number) conf.get(Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS)).intValue(); _pending = new TimeCacheMap<List<Object>, Map<GlobalStreamId, Tuple>>(timeout, new ExpireCallback()); _numSources = context.getThisSources().size(); Set<String> idFields = null; for (GlobalStreamId source : context.getThisSources().keySet()) { Fields fields = context.getComponentOutputFields(source.get_componentId(), source.get_streamId()); Set<String> setFields = new HashSet<String>(fields.toList()); if (idFields == null) { idFields = setFields; } else { idFields.retainAll(setFields); } for (String outfield : _outFields) { for (String sourcefield : fields) { if (outfield.equals(sourcefield)) { _fieldLocations.put(outfield, source); } } } } _idFields = new Fields(new ArrayList<String>(idFields)); if (_fieldLocations.size() != _outFields.size()) { throw new RuntimeException("Cannot find all outfields among sources"); } }
/** * Gets the declared output fields for the specified stream id for the * component this task is a part of. */ public Fields getThisOutputFields(String streamId) { return getComponentOutputFields(getThisComponentId(), streamId); }
private Fields getSourceOutputFields(TopologyContext context, String sourceStream) { for(GlobalStreamId g: context.getThisSources().keySet()) { if(g.get_streamId().equals(sourceStream)) { return context.getComponentOutputFields(g); } } throw new RuntimeException("Could not find fields for source stream " + sourceStream); }
/** * Gets the declared input fields for this component. * * @return A map from sources to streams to fields. */ public Map<String, Map<String, List<String>>> getThisInputFields() { Map<String, Map<String, List<String>>> outputMap = new HashMap<>(); for (Map.Entry<GlobalStreamId, Grouping> entry : this.getThisSources().entrySet()) { String componentId = entry.getKey().get_componentId(); Set<String> streams = getComponentStreams(componentId); for (String stream : streams) { Map<String, List<String>> streamFieldMap = outputMap.get(componentId); if (streamFieldMap == null) { streamFieldMap = new HashMap<>(); outputMap.put(componentId, streamFieldMap); } streamFieldMap.put(stream, getComponentOutputFields(componentId, stream).toList()); } } return outputMap; }
@Override public void prepare(Map conf, TopologyContext context, OutputCollector collector) { _fieldLocations = new HashMap<String, GlobalStreamId>(); _collector = collector; int timeout = ((Number) conf.get(Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS)).intValue(); _pending = new TimeCacheMap<List<Object>, Map<GlobalStreamId, Tuple>>(timeout, new ExpireCallback()); _numSources = context.getThisSources().size(); Set<String> idFields = null; for (GlobalStreamId source : context.getThisSources().keySet()) { Fields fields = context.getComponentOutputFields(source.get_componentId(), source.get_streamId()); Set<String> setFields = new HashSet<String>(fields.toList()); if (idFields == null) idFields = setFields; else idFields.retainAll(setFields); for (String outfield : _outFields) { for (String sourcefield : fields) { if (outfield.equals(sourcefield)) { _fieldLocations.put(outfield, source); } } } } _idFields = new Fields(new ArrayList<String>(idFields)); if (_fieldLocations.size() != _outFields.size()) { throw new RuntimeException("Cannot find all outfields among sources"); } }
this.inputStreamIds.put(tid, inputStream.get_streamId()); this.inputSchemas.put(tid, this.topologyContext.getComponentOutputFields(inputStream));