
com.tinkerpop.gremlin.giraph.process.computer.util.SideEffectsMapReduce Maven / Gradle / Ivy
package com.tinkerpop.gremlin.giraph.process.computer.util;
import com.tinkerpop.gremlin.giraph.Constants;
import com.tinkerpop.gremlin.process.computer.MapReduce;
import com.tinkerpop.gremlin.process.computer.SideEffects;
import com.tinkerpop.gremlin.structure.Graph;
import com.tinkerpop.gremlin.structure.Property;
import com.tinkerpop.gremlin.structure.Vertex;
import org.apache.commons.configuration.Configuration;
import org.javatuples.Pair;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public class SideEffectsMapReduce implements MapReduce> {
public Set sideEffectKeys = new HashSet<>();
public String getSideEffectKey() {
return Constants.TILDA_SIDE_EFFECTS;
}
public SideEffectsMapReduce() {
}
public SideEffectsMapReduce(final Set sideEffectKeys) {
this.sideEffectKeys = sideEffectKeys;
}
@Override
public void storeState(final Configuration configuration) {
configuration.setProperty(Constants.GREMLIN_SIDE_EFFECT_KEYS, new ArrayList<>(this.sideEffectKeys.size()));
}
@Override
public void loadState(final Configuration configuration) {
this.sideEffectKeys = new HashSet((List) configuration.getList(Constants.GREMLIN_SIDE_EFFECT_KEYS));
}
@Override
public boolean doStage(final Stage stage) {
return true;
}
@Override
public void map(final Vertex vertex, final MapEmitter emitter) {
for (final String sideEffectKey : this.sideEffectKeys) {
final Property property = vertex.property(Graph.Key.hide(sideEffectKey));
if (property.isPresent()) {
emitter.emit(sideEffectKey, property.value());
}
}
}
@Override
public void combine(final String key, final Iterator
© 2015 - 2025 Weber Informatics LLC | Privacy Policy