Class ReduceWorker

  • All Implemented Interfaces:
    java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

    public class ReduceWorker
    extends TypedAtomicActor
    A ReduceWorker actor, as a subsystem of the MapReduce system.

    This actor has a parameter classNameForReduce which is the qualified name for a Java class that extends ptolemy.actor.ptalon.lib.MapReduceAlgorithm. It must also have a no argument constructor. By extending this abstract class, it will implement a method named reduce with type signature:

    public List<String> reduce(String key, BlockingQueue<String> value)

    This method defines the Reduce algorithm for the MapReduce system. At each call, it should return a list of Strings, which is a reduction of the list of input values. At each firing, this actor inputs all available input keys and values. It outputs the value tokens when its doneReading port receives a true value. This should only happen after all inputs have been sent to the system.

    When implementing a custom reduce method in a subclass of MapReduceAlgorithm, note to use the take method to get values from the queue. Call the isQueueEmpty of MapReduceAlgorithm to test if this actor has stopped putting values on the queue and that all values have been taken from the queue. The last element of the queue will always be the empty string. Ignore this value.

    Since:
    Ptolemy II 6.1
    Version:
    $Id$
    Author:
    Adam Cataldo
    See Also:
    KeyValuePair
    Pt.AcceptedRating:
    Red (cxh)
    Pt.ProposedRating:
    Red (cxh)
    • Field Detail

      • classNameForReduce

        public StringParameter classNameForReduce
        The qualified class name for a Java class containing a method with signature:

        public static List<String[]> map(String key, String value)

        Each element of each returned list should be a length two array of Strings.

      • doneReading

        public TypedIOPort doneReading
        A boolean input. When this input is true, the actor is done reading values, and it may output tokens for each key it received.
      • inputKey

        public TypedIOPort inputKey
        A String input key.
      • inputValue

        public TypedIOPort inputValue
        A String input value.
      • outputKey

        public TypedIOPort outputKey
        A String output key.
      • outputValue

        public TypedIOPort outputValue
        A String output value.
    • Constructor Detail

      • ReduceWorker

        public ReduceWorker​(CompositeEntity container,
                            java.lang.String name)
                     throws IllegalActionException,
                            NameDuplicationException
        Create a new actor in the specified container with the specified name. The name must be unique within the container or an exception is thrown. The container argument must not be null, or a NullPointerException will be thrown.
        Parameters:
        container - The container.
        name - The name of this actor within the container.
        Throws:
        IllegalActionException - If this actor cannot be contained by the proposed container (see the setContainer() method).
        NameDuplicationException - If the name coincides with an entity already in the container.
    • Method Detail

      • attributeChanged

        public void attributeChanged​(Attribute attribute)
                              throws IllegalActionException
        React to a change in an attribute. This method is called by a contained attribute when its value changes. In this base class, the method does nothing. In derived classes, this method may throw an exception, indicating that the new attribute value is invalid. It is up to the caller to restore the attribute to a valid value if an exception is thrown. If the attribute changed is classNameForReduce, update this actor accordingly.
        Overrides:
        attributeChanged in class NamedObj
        Parameters:
        attribute - The attribute that changed.
        Throws:
        IllegalActionException - If the change is not acceptable to this container. If the class set in classNameForReduce does not exist, or if the class exists but does not contain a map method with an appropriate signature, this exception will be thrown.
      • postfire

        public boolean postfire()
                         throws IllegalActionException
        Description copied from class: AtomicActor
        Return true, unless stop() has been called, in which case, return false. Derived classes override this method to define operations to be performed at the end of every iteration of its execution, after one invocation of the prefire() method and any number of invocations of the fire() method. This method typically wraps up an iteration, which may involve updating local state. In derived classes, this method returns false to indicate that this actor should not be fired again.
        Specified by:
        postfire in interface Executable
        Overrides:
        postfire in class AtomicActor<TypedIOPort>
        Returns:
        The base class return value.
        Throws:
        IllegalActionException - If thrown in the base class.