com.twitter.scalding.examples

PageRank

class PageRank extends Job

Options: --input: the three column TSV with node, comma-sep-out-neighbors, initial pagerank (set to 1.0 first) --ouput: the name for the TSV you want to write to, same as above. optional arguments: --errorOut: name of where to write the L1 error between the input page-rank and the output if this is omitted, we don't compute the error --iterations: how many iterations to run inside this job. Default is 1, 10 is about as much as cascading can handle. --jumpprob: probability of a random jump, default is 0.15 --convergence: if this is set, after every "--iterations" steps, we check the error and see if we should continue. Since the error check is expensive (involving a join), you should avoid doing this too frequently. 10 iterations is probably a good number to set. --temp: this is the name where we will store a temporary output so we can compare to the previous for convergence checking. If convergence is set, this MUST be.

Linear Supertypes
Job, Serializable, FieldConversions, LowPriorityFieldConversions, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. PageRank
  2. Job
  3. Serializable
  4. FieldConversions
  5. LowPriorityFieldConversions
  6. AnyRef
  7. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new PageRank(args: Args)

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. val ALPHA: Double

  7. val EDGE: Int

  8. val JOB_COUNT: Int

  9. val NODESET: Int

  10. val STEPS: Int

  11. def anyToFieldArg(f: Any): Comparable[_]

    Attributes
    protected
    Definition Classes
    LowPriorityFieldConversions
  12. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  13. def asList(f: Fields): List[Comparable[_]]

    Definition Classes
    FieldConversions
  14. def asSet(f: Fields): Set[Comparable[_]]

    Definition Classes
    FieldConversions
  15. def buildFlow: Flow[_]

    combine the config, flowDef and the Mode to produce a flow

    combine the config, flowDef and the Mode to produce a flow

    Definition Classes
    Job
  16. def classIdentifier: String

    Definition Classes
    Job
  17. def clear: Unit

    Definition Classes
    Job
  18. def clone(nextargs: Args): Job

    Copy this job By default, this uses reflection and the single argument Args constructor

    Copy this job By default, this uses reflection and the single argument Args constructor

    Definition Classes
    Job
  19. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. def computeError(pr: RichPipe): RichPipe

  21. def config: Map[AnyRef, AnyRef]

    This is the exact config that is passed to the Cascading FlowConnector.

    This is the exact config that is passed to the Cascading FlowConnector. By default: if there are no spill thresholds in mode.config, we replace with defaultSpillThreshold we overwrite io.serializations with ioSerializations we overwrite cascading.tuple.element.comparator.default to defaultComparator we add some scalding keys for debugging/logging

    Tip: override this method, call super, and ++ your additional map to add or overwrite more options

    This returns Map[AnyRef, AnyRef] for compatibility with older code

    Definition Classes
    Job
  22. implicit def dateParser: DateParser

    Override this to control how dates are parsed

    Override this to control how dates are parsed

    Definition Classes
    Job
  23. def defaultComparator: Option[Class[_ <: Comparator[_]]]

    Override this if you want to customize comparisons/hashing for your job the config method overwrites using this before sending to cascading The one we use by default is needed used to make Joins in the Fields-API more robust to Long vs Int differences.

    Override this if you want to customize comparisons/hashing for your job the config method overwrites using this before sending to cascading The one we use by default is needed used to make Joins in the Fields-API more robust to Long vs Int differences. If you only use the Typed-API, consider changing this to return None

    Definition Classes
    Job
  24. def defaultMode(fromFields: Fields, toFields: Fields): Fields

    Rather than give the full power of cascading's selectors, we have a simpler set of rules encoded below: 1) if the input is non-definite (ALL, GROUP, ARGS, etc.

    Rather than give the full power of cascading's selectors, we have a simpler set of rules encoded below: 1) if the input is non-definite (ALL, GROUP, ARGS, etc...) ALL is the output. Perhaps only fromFields=ALL will make sense 2) If one of from or to is a strict super set of the other, SWAP is used. 3) If they are equal, REPLACE is used. 4) Otherwise, ALL is used.

    Definition Classes
    FieldConversions
  25. def defaultSpillThreshold: Int

    Keep 100k tuples in memory by default before spilling Turn this up as high as you can without getting OOM.

    Keep 100k tuples in memory by default before spilling Turn this up as high as you can without getting OOM.

    This is ignored if there is a value set in the incoming jobConf on Hadoop

    Definition Classes
    Job
  26. final def doPageRank(steps: Int)(pagerank: RichPipe): RichPipe

    The basic idea is to groupBy the dst key with BOTH the nodeset and the edge rows.

    The basic idea is to groupBy the dst key with BOTH the nodeset and the edge rows. the nodeset rows have the old page-rank, the edge rows are reversed, so we can get the incoming page-rank from the nodes that point to each destination.

    Annotations
    @tailrec()
  27. final def ensureUniqueFields(left: Fields, right: Fields, rightPipe: Pipe): (Fields, Pipe)

    Definition Classes
    FieldConversions
  28. implicit def enumValueToFields(x: Value): Fields

    Definition Classes
    FieldConversions
  29. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  30. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  31. implicit def fieldFields[T <: TraversableOnce[Field[_]]](f: T): RichFields

    Definition Classes
    FieldConversions
  32. implicit def fieldToFields(f: Field[_]): RichFields

    Definition Classes
    FieldConversions
  33. implicit def fields[T <: TraversableOnce[Symbol]](f: T): Fields

    Definition Classes
    FieldConversions
  34. implicit def fieldsToRichFields(fields: Fields): RichFields

    We can't set the field Manifests because cascading doesn't (yet) expose field type information in the Fields API.

    We can't set the field Manifests because cascading doesn't (yet) expose field type information in the Fields API.

    Definition Classes
    FieldConversions
  35. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  36. implicit val flowDef: FlowDef

    Attributes
    protected
    Definition Classes
    Job
  37. implicit def fromEnum[T <: Enumeration](enumeration: T): Fields

    Multi-entry fields.

    Multi-entry fields. This are higher priority than Product conversions so that List will not conflict with Product.

    Definition Classes
    FieldConversions
  38. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  39. def getField(f: Fields, idx: Int): Fields

    Definition Classes
    FieldConversions
  40. def handleStats(statsData: CascadingStats): Unit

    Attributes
    protected
    Definition Classes
    Job
  41. def hasInts(f: Fields): Boolean

    Definition Classes
    FieldConversions
  42. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  43. def initialize(nodeCol: Symbol, neighCol: Symbol, pageRank: Symbol): Pipe

    override this function to change how you generate a pipe of (Long, String, Double) where the first entry is the nodeid, the second is the list of neighbors, as a comma (no spaces) separated string representation of the numeric nodeids, the third is the initial page rank (if not starting from a previous run, this should be 1.

    override this function to change how you generate a pipe of (Long, String, Double) where the first entry is the nodeid, the second is the list of neighbors, as a comma (no spaces) separated string representation of the numeric nodeids, the third is the initial page rank (if not starting from a previous run, this should be 1.0

    NOTE: if you want to run until convergence, the initialize method must read the same EXACT format as the output method writes. This is your job!

  44. implicit def intFields[T <: TraversableOnce[Int]](f: T): Fields

    Definition Classes
    FieldConversions
  45. implicit def intToFields(x: Int): Fields

    Definition Classes
    FieldConversions
  46. implicit def integerToFields(x: Integer): Fields

    Definition Classes
    FieldConversions
  47. def ioSerializations: List[Class[_ <: Serialization[_]]]

    These are user-defined serializations IN-ADDITION to (but deduped) with the required serializations

    These are user-defined serializations IN-ADDITION to (but deduped) with the required serializations

    Definition Classes
    Job
  48. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  49. implicit def iterableToRichPipe[T](iter: Iterable[T])(implicit set: TupleSetter[T], conv: TupleConverter[T]): RichPipe

    Definition Classes
    Job
  50. def keepAlive: Unit

    Use this if a map or reduce phase takes a while before emitting tuples.

    Use this if a map or reduce phase takes a while before emitting tuples.

    Definition Classes
    Job
  51. def listeners: List[FlowListener]

    Definition Classes
    Job
  52. implicit def mode: Mode

    Definition Classes
    Job
  53. def name: String

    Definition Classes
    Job
  54. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  55. final def newSymbol(avoid: Set[Symbol], guess: Symbol, trial: Int = 0): Symbol

    Definition Classes
    FieldConversions
    Annotations
    @tailrec()
  56. def next: Option[Job]

    Here is where we check for convergence and then run the next job if we're not converged

    Here is where we check for convergence and then run the next job if we're not converged

    Definition Classes
    PageRankJob
  57. final def notify(): Unit

    Definition Classes
    AnyRef
  58. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  59. def output(pipe: RichPipe): Pipe

  60. implicit def parseAnySeqToFields[T <: TraversableOnce[Any]](anyf: T): Fields

    Useful to convert f : Any* to Fields.

    Useful to convert f : Any* to Fields. This handles mixed cases ("hey", 'you). Not sure we should be this flexible, but given that Cascading will throw an exception before scheduling the job, I guess this is okay.

    Definition Classes
    FieldConversions
  61. implicit def pipeToRichPipe(pipe: Pipe): RichPipe

    you should never call this directly, it is here to make the DSL work.

    you should never call this directly, it is here to make the DSL work. Just know, you can treat a Pipe as a RichPipe within a Job

    Definition Classes
    Job
  62. implicit def productToFields(f: Product): Fields

    Handles treating any TupleN as a Fields object.

    Handles treating any TupleN as a Fields object. This is low priority because List is also a Product, but this method will not work for List (because List is Product2(head, tail) and so productIterator won't work as expected. Lists are handled by an implicit in FieldConversions, which have higher priority.

    Definition Classes
    LowPriorityFieldConversions
  63. implicit def read(src: Source): Pipe

    This is implicit so that a Source can be used as the argument to a join or other method that accepts Pipe.

    This is implicit so that a Source can be used as the argument to a join or other method that accepts Pipe.

    Definition Classes
    Job
  64. def run: Boolean

    Definition Classes
    Job
  65. implicit def scaldingConfig: Config

    This is here so that Mappable.

    This is here so that Mappable.toIterator can find an implicit config

    Attributes
    protected
    Definition Classes
    Job
  66. def skipStrategy: Option[FlowSkipStrategy]

    Definition Classes
    Job
  67. implicit def sourceToRichPipe(src: Source): RichPipe

    This implicit is to enable RichPipe methods directly on Source objects, such as map/flatMap, etc.

    This implicit is to enable RichPipe methods directly on Source objects, such as map/flatMap, etc...

    Note that Mappable is a subclass of Source, and Mappable already has mapTo and flatMapTo BUT WITHOUT incoming fields used (see the Mappable trait). This creates some confusion when using these methods (this is an unfortunate mistake in our design that was not noticed until later). To remove ambiguity, explicitly call .read on any Source that you begin operating with a mapTo/flatMapTo.

    Definition Classes
    Job
  68. def stepListeners: List[FlowStepListener]

    Definition Classes
    Job
  69. def stepStrategy: Option[FlowStepStrategy[_]]

    Specify a callback to run before the start of each flow step.

    Specify a callback to run before the start of each flow step.

    Defaults to what Config.getReducerEstimator specifies.

    Definition Classes
    Job
    See also

    ExecutionContext.buildFlow

  70. implicit def strFields[T <: TraversableOnce[String]](f: T): Fields

    Definition Classes
    FieldConversions
  71. implicit def stringToFields(x: String): Fields

    Definition Classes
    FieldConversions
  72. implicit def symbolToFields(x: Symbol): Fields

    '* means Fields.

    '* means Fields.ALL, otherwise we take the .name

    Definition Classes
    FieldConversions
  73. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  74. def timeout[T](timeout: AbsoluteDuration)(t: ⇒ T): Option[T]

    Definition Classes
    Job
  75. implicit def toPipe[T](iter: Iterable[T])(implicit set: TupleSetter[T], conv: TupleConverter[T]): Pipe

    Definition Classes
    Job
  76. def toString(): String

    Definition Classes
    AnyRef → Any
  77. implicit def tuple2ToFieldsPair[T, U](pair: (T, U))(implicit tf: (T) ⇒ Fields, uf: (U) ⇒ Fields): (Fields, Fields)

    Definition Classes
    FieldConversions
  78. implicit def unitToFields(u: Unit): Fields

    Definition Classes
    FieldConversions
  79. def validate: Unit

    Definition Classes
    Job
  80. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  81. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  82. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  83. def write(pipe: Pipe, src: Source): Unit

    This is only here for Java jobs which cannot automatically access the implicit Pipe => RichPipe which makes: pipe.

    This is only here for Java jobs which cannot automatically access the implicit Pipe => RichPipe which makes: pipe.write( ) convenient

    Definition Classes
    Job

Inherited from Job

Inherited from Serializable

Inherited from FieldConversions

Inherited from AnyRef

Inherited from Any

Ungrouped