You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@predictionio.apache.org by gi...@apache.org on 2017/05/18 04:43:52 UTC

[14/51] [abbrv] [partial] incubator-predictionio-site git commit: Documentation based on apache/incubator-predictionio#490dd9e9fc8a055c0dd256880c164c8de21fc2fd

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/f0ff7d76/api/current/org/apache/predictionio/controller/PAlgorithm.html
----------------------------------------------------------------------
diff --git a/api/current/org/apache/predictionio/controller/PAlgorithm.html b/api/current/org/apache/predictionio/controller/PAlgorithm.html
new file mode 100644
index 0000000..161d811
--- /dev/null
+++ b/api/current/org/apache/predictionio/controller/PAlgorithm.html
@@ -0,0 +1,649 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html>
+        <head>
+          <title>PAlgorithm - PredictionIO Scala API 0.11.0-incubating - org.apache.predictionio.controller.PAlgorithm</title>
+          <meta name="description" content="PAlgorithm - PredictionIO Scala API 0.11.0 - incubating - org.apache.predictionio.controller.PAlgorithm" />
+          <meta name="keywords" content="PAlgorithm PredictionIO Scala API 0.11.0 incubating org.apache.predictionio.controller.PAlgorithm" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript">
+         if(top === self) {
+            var url = '../../../../index.html';
+            var hash = 'org.apache.predictionio.controller.PAlgorithm';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="type">
+      <div id="definition">
+        <img src="../../../../lib/class_big.png" />
+        <p id="owner"><a href="../../../package.html" class="extype" name="org">org</a>.<a href="../../package.html" class="extype" name="org.apache">apache</a>.<a href="../package.html" class="extype" name="org.apache.predictionio">predictionio</a>.<a href="package.html" class="extype" name="org.apache.predictionio.controller">controller</a></p>
+        <h1>PAlgorithm</h1>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">abstract </span>
+        <span class="kind">class</span>
+      </span>
+      <span class="symbol">
+        <span class="name">PAlgorithm</span><span class="tparams">[<span name="PD">PD</span>, <span name="M">M</span>, <span name="Q">Q</span>, <span name="P">P</span>]</span><span class="result"> extends <a href="../core/BaseAlgorithm.html" class="extype" name="org.apache.predictionio.core.BaseAlgorithm">BaseAlgorithm</a>[<span class="extype" name="org.apache.predictionio.controller.PAlgorithm.PD">PD</span>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.M">M</span>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.Q">Q</span>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.P">P</span>]</span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"><div class="comment cmt"><p>Base class of a parallel algorithm.</p><p>A parallel algorithm can be run in parallel on a cluster and produces a
+model that can also be distributed across a cluster.</p><p>If your input query class requires custom JSON4S serialization, the most
+idiomatic way is to implement a trait that extends <a href="CustomQuerySerializer.html" class="extype" name="org.apache.predictionio.controller.CustomQuerySerializer">CustomQuerySerializer</a>,
+and mix that into your algorithm class, instead of overriding
+<a href="#querySerializer:org.json4s.Formats" class="extmbr" name="org.apache.predictionio.controller.PAlgorithm#querySerializer">querySerializer</a> directly.</p><p>To provide evaluation feature, one must override and implement the
+<a href="#batchPredict(m:M,qs:org.apache.spark.rdd.RDD[(Long,Q)]):org.apache.spark.rdd.RDD[(Long,P)]" class="extmbr" name="org.apache.predictionio.controller.PAlgorithm#batchPredict">batchPredict</a> method. Otherwise, an exception will be thrown when pio eval<code>
+is used.
+</code></p></div><dl class="paramcmts block"><dt class="tparam">PD</dt><dd class="cmt"><p>Prepared data class.</p></dd><dt class="tparam">M</dt><dd class="cmt"><p>Trained model class.</p></dd><dt class="tparam">Q</dt><dd class="cmt"><p>Input query class.</p></dd><dt class="tparam">P</dt><dd class="cmt"><p>Output prediction class.</p></dd></dl><div class="toggleContainer block">
+          <span class="toggle">Linear Supertypes</span>
+          <div class="superTypes hiddenContent"><a href="../core/BaseAlgorithm.html" class="extype" name="org.apache.predictionio.core.BaseAlgorithm">BaseAlgorithm</a>[<span class="extype" name="org.apache.predictionio.controller.PAlgorithm.PD">PD</span>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.M">M</span>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.Q">Q</span>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.P">P</span>], <a href="../core/BaseQuerySerializer.html" class="extype" name="org.apache.predictionio.core.BaseQuerySerializer">BaseQuerySerializer</a>, <a href="../core/AbstractDoer.html" class="extype" name="org.apache.predictionio.core.AbstractDoer">AbstractDoer</a>, <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Serializable" class="extype" target="_top">Serializable</a>, <span class="extype" name="java.io.Serializable">Serializable</span>, <span class="extype" name="scal
 a.AnyRef">AnyRef</span>, <span class="extype" name="scala.Any">Any</span></div>
+        </div></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        <div id="order">
+              <span class="filtertype">Ordering</span>
+              <ol>
+                
+                <li class="alpha in"><span>Alphabetic</span></li>
+                <li class="inherit out"><span>By inheritance</span></li>
+              </ol>
+            </div>
+        <div id="ancestors">
+                <span class="filtertype">Inherited<br />
+                </span>
+                <ol id="linearization">
+                  <li class="in" name="org.apache.predictionio.controller.PAlgorithm"><span>PAlgorithm</span></li><li class="in" name="org.apache.predictionio.core.BaseAlgorithm"><span>BaseAlgorithm</span></li><li class="in" name="org.apache.predictionio.core.BaseQuerySerializer"><span>BaseQuerySerializer</span></li><li class="in" name="org.apache.predictionio.core.AbstractDoer"><span>AbstractDoer</span></li><li class="in" name="scala.Serializable"><span>Serializable</span></li><li class="in" name="java.io.Serializable"><span>Serializable</span></li><li class="in" name="scala.AnyRef"><span>AnyRef</span></li><li class="in" name="scala.Any"><span>Any</span></li>
+                </ol>
+              </div><div id="ancestors">
+            <span class="filtertype"></span>
+            <ol>
+              <li class="hideall out"><span>Hide All</span></li>
+              <li class="showall in"><span>Show all</span></li>
+            </ol>
+            <a href="http://docs.scala-lang.org/overviews/scaladoc/usage.html#members" target="_blank">Learn more about member selection</a>
+          </div>
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        <div id="constructors" class="members">
+              <h3>Instance Constructors</h3>
+              <ol><li name="org.apache.predictionio.controller.PAlgorithm#&lt;init&gt;" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="&lt;init&gt;():org.apache.predictionio.controller.PAlgorithm[PD,M,Q,P]"></a>
+      <a id="&lt;init&gt;:PAlgorithm[PD,M,Q,P]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">new</span>
+      </span>
+      <span class="symbol">
+        <span class="name">PAlgorithm</span><span class="params">()</span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt"></p>
+    </li></ol>
+            </div>
+
+        
+
+        <div id="values" class="values members">
+              <h3>Abstract Value Members</h3>
+              <ol><li name="org.apache.predictionio.controller.PAlgorithm#predict" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
+      <a id="predict(model:M,query:Q):P"></a>
+      <a id="predict(M,Q):P"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">abstract </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">predict</span><span class="params">(<span name="model">model: <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.M">M</span></span>, <span name="query">query: <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.Q">Q</span></span>)</span><span class="result">: <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.P">P</span></span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">Implement this method to produce a prediction from a query and trained
+model.</p><div class="fullcomment"><div class="comment cmt"><p>Implement this method to produce a prediction from a query and trained
+model.
+</p></div><dl class="paramcmts block"><dt class="param">model</dt><dd class="cmt"><p>Trained model produced by <a href="#train(sc:org.apache.spark.SparkContext,pd:PD):M" class="extmbr" name="org.apache.predictionio.controller.PAlgorithm#train">train</a>.</p></dd><dt class="param">query</dt><dd class="cmt"><p>An input query.</p></dd><dt>returns</dt><dd class="cmt"><p>A prediction.
+</p></dd></dl></div>
+    </li><li name="org.apache.predictionio.controller.PAlgorithm#train" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
+      <a id="train(sc:org.apache.spark.SparkContext,pd:PD):M"></a>
+      <a id="train(SparkContext,PD):M"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">abstract </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">train</span><span class="params">(<span name="sc">sc: <span class="extype" name="org.apache.spark.SparkContext">SparkContext</span></span>, <span name="pd">pd: <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.PD">PD</span></span>)</span><span class="result">: <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.M">M</span></span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">Implement this method to produce a model from prepared data.</p><div class="fullcomment"><div class="comment cmt"><p>Implement this method to produce a model from prepared data.
+</p></div><dl class="paramcmts block"><dt class="param">pd</dt><dd class="cmt"><p>Prepared data for model training.</p></dd><dt>returns</dt><dd class="cmt"><p>Trained model.
+</p></dd></dl></div>
+    </li></ol>
+            </div>
+
+        <div id="values" class="values members">
+              <h3>Concrete Value Members</h3>
+              <ol><li name="scala.AnyRef#!=" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="!=(x$1:AnyRef):Boolean"></a>
+      <a id="!=(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $bang$eq" class="name">!=</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.Any#!=" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="!=(x$1:Any):Boolean"></a>
+      <a id="!=(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $bang$eq" class="name">!=</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.AnyRef###" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="##():Int"></a>
+      <a id="##():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $hash$hash" class="name">##</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Int" class="extype" target="_top">Int</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#==" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="==(x$1:AnyRef):Boolean"></a>
+      <a id="==(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $eq$eq" class="name">==</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.Any#==" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="==(x$1:Any):Boolean"></a>
+      <a id="==(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $eq$eq" class="name">==</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.Any#asInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="asInstanceOf[T0]:T0"></a>
+      <a id="asInstanceOf[T0]:T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">asInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Any.asInstanceOf.T0">T0</span></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="org.apache.predictionio.controller.PAlgorithm#batchPredict" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="batchPredict(m:M,qs:org.apache.spark.rdd.RDD[(Long,Q)]):org.apache.spark.rdd.RDD[(Long,P)]"></a>
+      <a id="batchPredict(M,RDD[(Long,Q)]):RDD[(Long,P)]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">batchPredict</span><span class="params">(<span name="m">m: <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.M">M</span></span>, <span name="qs">qs: <span class="extype" name="org.apache.spark.rdd.RDD">RDD</span>[(<a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Long" class="extype" target="_top">Long</a>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.Q">Q</span>)]</span>)</span><span class="result">: <span class="extype" name="org.apache.spark.rdd.RDD">RDD</span>[(<a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Long" class="extype" target="_top">Long</a>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.P">P</span>)]</span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">To provide evaluation feature, one must override and implement this method
+to generate many predictions in batch.</p><div class="fullcomment"><div class="comment cmt"><p>To provide evaluation feature, one must override and implement this method
+to generate many predictions in batch. Otherwise, an exception will be
+thrown when <code>pio eval</code> is used.</p><p>The default implementation throws an exception.
+</p></div><dl class="paramcmts block"><dt class="param">m</dt><dd class="cmt"><p>Trained model produced by <a href="#train(sc:org.apache.spark.SparkContext,pd:PD):M" class="extmbr" name="org.apache.predictionio.controller.PAlgorithm#train">train</a>.</p></dd><dt class="param">qs</dt><dd class="cmt"><p>An RDD of index-query tuples. The index is used to keep track of
+          predicted results with corresponding queries.
+</p></dd></dl></div>
+    </li><li name="org.apache.predictionio.controller.PAlgorithm#batchPredictBase" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="batchPredictBase(sc:org.apache.spark.SparkContext,bm:Any,qs:org.apache.spark.rdd.RDD[(Long,Q)]):org.apache.spark.rdd.RDD[(Long,P)]"></a>
+      <a id="batchPredictBase(SparkContext,Any,RDD[(Long,Q)]):RDD[(Long,P)]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">batchPredictBase</span><span class="params">(<span name="sc">sc: <span class="extype" name="org.apache.spark.SparkContext">SparkContext</span></span>, <span name="bm">bm: <span class="extype" name="scala.Any">Any</span></span>, <span name="qs">qs: <span class="extype" name="org.apache.spark.rdd.RDD">RDD</span>[(<a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Long" class="extype" target="_top">Long</a>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.Q">Q</span>)]</span>)</span><span class="result">: <span class="extype" name="org.apache.spark.rdd.RDD">RDD</span>[(<a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Long" class="extype" target="_top">Long</a>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.P">P</span>)]</span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">:: DeveloperApi ::
+Engine developers should not use this directly.</p><div class="fullcomment"><div class="comment cmt"><p>:: DeveloperApi ::
+Engine developers should not use this directly. This is called by
+evaluation workflow to perform batch prediction.
+</p></div><dl class="paramcmts block"><dt class="param">sc</dt><dd class="cmt"><p>Spark context</p></dd><dt class="param">bm</dt><dd class="cmt"><p>Model</p></dd><dt class="param">qs</dt><dd class="cmt"><p>Batch of queries</p></dd><dt>returns</dt><dd class="cmt"><p>Batch of predicted results
+</p></dd></dl><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.predictionio.controller.PAlgorithm">PAlgorithm</a> → <a href="../core/BaseAlgorithm.html" class="extype" name="org.apache.predictionio.core.BaseAlgorithm">BaseAlgorithm</a></dd></dl></div>
+    </li><li name="scala.AnyRef#clone" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="clone():Object"></a>
+      <a id="clone():AnyRef"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">clone</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.CloneNotSupportedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#eq" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="eq(x$1:AnyRef):Boolean"></a>
+      <a id="eq(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">eq</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#equals" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="equals(x$1:Any):Boolean"></a>
+      <a id="equals(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">equals</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#finalize" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="finalize():Unit"></a>
+      <a id="finalize():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">finalize</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="symbol">classOf[java.lang.Throwable]</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#getClass" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="getClass():Class[_]"></a>
+      <a id="getClass():Class[_]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">getClass</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.Class">Class</span>[_]</span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="org.apache.predictionio.core.BaseQuerySerializer#gsonTypeAdapterFactories" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="gsonTypeAdapterFactories:Seq[com.google.gson.TypeAdapterFactory]"></a>
+      <a id="gsonTypeAdapterFactories:Seq[TypeAdapterFactory]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">lazy val</span>
+      </span>
+      <span class="symbol">
+        <span class="name">gsonTypeAdapterFactories</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.collection.Seq" class="extype" target="_top">Seq</a>[<span class="extype" name="com.google.gson.TypeAdapterFactory">TypeAdapterFactory</span>]</span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">:: DeveloperApi ::
+Serializer for Java query classes using Gson
+</p><div class="fullcomment"><div class="comment cmt"><p>:: DeveloperApi ::
+Serializer for Java query classes using Gson
+</p></div><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="../core/BaseQuerySerializer.html" class="extype" name="org.apache.predictionio.core.BaseQuerySerializer">BaseQuerySerializer</a></dd></dl></div>
+    </li><li name="scala.AnyRef#hashCode" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="hashCode():Int"></a>
+      <a id="hashCode():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">hashCode</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Int" class="extype" target="_top">Int</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.Any#isInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">isInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="org.apache.predictionio.controller.PAlgorithm#makePersistentModel" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="makePersistentModel(sc:org.apache.spark.SparkContext,modelId:String,algoParams:org.apache.predictionio.controller.Params,bm:Any):Any"></a>
+      <a id="makePersistentModel(SparkContext,String,Params,Any):Any"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">makePersistentModel</span><span class="params">(<span name="sc">sc: <span class="extype" name="org.apache.spark.SparkContext">SparkContext</span></span>, <span name="modelId">modelId: <span class="extype" name="scala.Predef.String">String</span></span>, <span name="algoParams">algoParams: <a href="Params.html" class="extype" name="org.apache.predictionio.controller.Params">Params</a></span>, <span name="bm">bm: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Any">Any</span></span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">:: DeveloperApi ::
+Engine developers should not use this directly (read on to see how parallel
+algorithm models are persisted).</p><div class="fullcomment"><div class="comment cmt"><p>:: DeveloperApi ::
+Engine developers should not use this directly (read on to see how parallel
+algorithm models are persisted).</p><p>In general, parallel models may contain multiple RDDs. It is not easy to
+infer and persist them programmatically since these RDDs may be
+potentially huge. To persist these models, engine developers need to  mix
+the <a href="PersistentModel.html" class="extype" name="org.apache.predictionio.controller.PersistentModel">PersistentModel</a> trait into the model class and implement
+<a href="PersistentModel.html#save(id:String,params:AP,sc:org.apache.spark.SparkContext):Boolean" class="extmbr" name="org.apache.predictionio.controller.PersistentModel#save">PersistentModel.save</a>. If it returns true, a
+<a href="../workflow/PersistentModelManifest.html" class="extype" name="org.apache.predictionio.workflow.PersistentModelManifest">org.apache.predictionio.workflow.PersistentModelManifest</a> will be
+returned so that during deployment, PredictionIO will use
+<a href="PersistentModelLoader.html" class="extype" name="org.apache.predictionio.controller.PersistentModelLoader">PersistentModelLoader</a> to retrieve the model. Otherwise, Unit will be
+returned and the model will be re-trained on-the-fly.
+</p></div><dl class="paramcmts block"><dt class="param">sc</dt><dd class="cmt"><p>Spark context</p></dd><dt class="param">modelId</dt><dd class="cmt"><p>Model ID</p></dd><dt class="param">algoParams</dt><dd class="cmt"><p>Algorithm parameters that trained this model</p></dd><dt class="param">bm</dt><dd class="cmt"><p>Model</p></dd><dt>returns</dt><dd class="cmt"><p>The model itself for automatic persistence, an instance of
+        <a href="../workflow/PersistentModelManifest.html" class="extype" name="org.apache.predictionio.workflow.PersistentModelManifest">org.apache.predictionio.workflow.PersistentModelManifest</a> for manual
+        persistence, or Unit for re-training on deployment
+</p></dd></dl><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.predictionio.controller.PAlgorithm">PAlgorithm</a> → <a href="../core/BaseAlgorithm.html" class="extype" name="org.apache.predictionio.core.BaseAlgorithm">BaseAlgorithm</a></dd><dt>Annotations</dt><dd>
+                <span class="name">@DeveloperApi</span><span class="args">()</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#ne" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="ne(x$1:AnyRef):Boolean"></a>
+      <a id="ne(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ne</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notify" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notify():Unit"></a>
+      <a id="notify():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notify</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notifyAll" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notifyAll():Unit"></a>
+      <a id="notifyAll():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notifyAll</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="org.apache.predictionio.controller.PAlgorithm#predictBase" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="predictBase(baseModel:Any,query:Q):P"></a>
+      <a id="predictBase(Any,Q):P"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">predictBase</span><span class="params">(<span name="baseModel">baseModel: <span class="extype" name="scala.Any">Any</span></span>, <span name="query">query: <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.Q">Q</span></span>)</span><span class="result">: <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.P">P</span></span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">:: DeveloperApi ::
+Engine developers should not use this directly.</p><div class="fullcomment"><div class="comment cmt"><p>:: DeveloperApi ::
+Engine developers should not use this directly. Called by serving to
+perform a single prediction.
+</p></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Predicted result
+</p></dd></dl><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.predictionio.controller.PAlgorithm">PAlgorithm</a> → <a href="../core/BaseAlgorithm.html" class="extype" name="org.apache.predictionio.core.BaseAlgorithm">BaseAlgorithm</a></dd></dl></div>
+    </li><li name="org.apache.predictionio.core.BaseAlgorithm#queryClass" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="queryClass:Class[Q]"></a>
+      <a id="queryClass:Class[Q]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">queryClass</span><span class="result">: <span class="extype" name="scala.Predef.Class">Class</span>[<span class="extype" name="org.apache.predictionio.controller.PAlgorithm.Q">Q</span>]</span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">:: DeveloperApi ::
+Obtains the type signature of query for this algorithm
+</p><div class="fullcomment"><div class="comment cmt"><p>:: DeveloperApi ::
+Obtains the type signature of query for this algorithm
+</p></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Type signature of query
+</p></dd></dl><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="../core/BaseAlgorithm.html" class="extype" name="org.apache.predictionio.core.BaseAlgorithm">BaseAlgorithm</a></dd></dl></div>
+    </li><li name="org.apache.predictionio.core.BaseQuerySerializer#querySerializer" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="querySerializer:org.json4s.Formats"></a>
+      <a id="querySerializer:Formats"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">lazy val</span>
+      </span>
+      <span class="symbol">
+        <span class="name">querySerializer</span><span class="result">: <span class="extype" name="org.json4s.Formats">Formats</span></span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">:: DeveloperApi ::
+Serializer for Scala query classes using
+<a href="Utils$.html#json4sDefaultFormats:org.json4s.Formats" class="extmbr" name="org.apache.predictionio.controller.Utils#json4sDefaultFormats">org.apache.predictionio.controller.Utils.json4sDefaultFormats</a>
+</p><div class="fullcomment"><div class="comment cmt"><p>:: DeveloperApi ::
+Serializer for Scala query classes using
+<a href="Utils$.html#json4sDefaultFormats:org.json4s.Formats" class="extmbr" name="org.apache.predictionio.controller.Utils#json4sDefaultFormats">org.apache.predictionio.controller.Utils.json4sDefaultFormats</a>
+</p></div><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="../core/BaseQuerySerializer.html" class="extype" name="org.apache.predictionio.core.BaseQuerySerializer">BaseQuerySerializer</a></dd></dl></div>
+    </li><li name="scala.AnyRef#synchronized" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="synchronized[T0](x$1:=&gt;T0):T0"></a>
+      <a id="synchronized[T0](⇒T0):T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">synchronized</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="params">(<span name="arg0">arg0: ⇒ <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>)</span><span class="result">: <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#toString" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="toString():String"></a>
+      <a id="toString():String"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">toString</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.String">String</span></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="org.apache.predictionio.controller.PAlgorithm#trainBase" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="trainBase(sc:org.apache.spark.SparkContext,pd:PD):M"></a>
+      <a id="trainBase(SparkContext,PD):M"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">trainBase</span><span class="params">(<span name="sc">sc: <span class="extype" name="org.apache.spark.SparkContext">SparkContext</span></span>, <span name="pd">pd: <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.PD">PD</span></span>)</span><span class="result">: <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.M">M</span></span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">:: DeveloperApi ::
+Engine developers should not use this directly.</p><div class="fullcomment"><div class="comment cmt"><p>:: DeveloperApi ::
+Engine developers should not use this directly. This is called by workflow
+to train a model.
+</p></div><dl class="paramcmts block"><dt class="param">sc</dt><dd class="cmt"><p>Spark context</p></dd><dt class="param">pd</dt><dd class="cmt"><p>Prepared data</p></dd><dt>returns</dt><dd class="cmt"><p>Trained model
+</p></dd></dl><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.predictionio.controller.PAlgorithm">PAlgorithm</a> → <a href="../core/BaseAlgorithm.html" class="extype" name="org.apache.predictionio.core.BaseAlgorithm">BaseAlgorithm</a></dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait():Unit"></a>
+      <a id="wait():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long,x$2:Int):Unit"></a>
+      <a id="wait(Long,Int):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Long" class="extype" target="_top">Long</a></span>, <span name="arg1">arg1: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Int" class="extype" target="_top">Int</a></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long):Unit"></a>
+      <a id="wait(Long):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Long" class="extype" target="_top">Long</a></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li></ol>
+            </div>
+
+        
+
+        
+        </div>
+
+        <div id="inheritedMembers">
+        <div class="parent" name="org.apache.predictionio.core.BaseAlgorithm">
+              <h3>Inherited from <a href="../core/BaseAlgorithm.html" class="extype" name="org.apache.predictionio.core.BaseAlgorithm">BaseAlgorithm</a>[<span class="extype" name="org.apache.predictionio.controller.PAlgorithm.PD">PD</span>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.M">M</span>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.Q">Q</span>, <span class="extype" name="org.apache.predictionio.controller.PAlgorithm.P">P</span>]</h3>
+            </div><div class="parent" name="org.apache.predictionio.core.BaseQuerySerializer">
+              <h3>Inherited from <a href="../core/BaseQuerySerializer.html" class="extype" name="org.apache.predictionio.core.BaseQuerySerializer">BaseQuerySerializer</a></h3>
+            </div><div class="parent" name="org.apache.predictionio.core.AbstractDoer">
+              <h3>Inherited from <a href="../core/AbstractDoer.html" class="extype" name="org.apache.predictionio.core.AbstractDoer">AbstractDoer</a></h3>
+            </div><div class="parent" name="scala.Serializable">
+              <h3>Inherited from <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Serializable" class="extype" target="_top">Serializable</a></h3>
+            </div><div class="parent" name="java.io.Serializable">
+              <h3>Inherited from <span class="extype" name="java.io.Serializable">Serializable</span></h3>
+            </div><div class="parent" name="scala.AnyRef">
+              <h3>Inherited from <span class="extype" name="scala.AnyRef">AnyRef</span></h3>
+            </div><div class="parent" name="scala.Any">
+              <h3>Inherited from <span class="extype" name="scala.Any">Any</span></h3>
+            </div>
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+      <script defer="defer" type="text/javascript" id="jquery-js" src="../../../../lib/jquery.js"></script><script defer="defer" type="text/javascript" id="jquery-ui-js" src="../../../../lib/jquery-ui.js"></script><script defer="defer" type="text/javascript" id="tools-tooltip-js" src="../../../../lib/tools.tooltip.js"></script><script defer="defer" type="text/javascript" id="template-js" src="../../../../lib/template.js"></script>
+    </body>
+      </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/f0ff7d76/api/current/org/apache/predictionio/controller/PDataSource.html
----------------------------------------------------------------------
diff --git a/api/current/org/apache/predictionio/controller/PDataSource.html b/api/current/org/apache/predictionio/controller/PDataSource.html
new file mode 100644
index 0000000..3cb096e
--- /dev/null
+++ b/api/current/org/apache/predictionio/controller/PDataSource.html
@@ -0,0 +1,539 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html>
+        <head>
+          <title>PDataSource - PredictionIO Scala API 0.11.0-incubating - org.apache.predictionio.controller.PDataSource</title>
+          <meta name="description" content="PDataSource - PredictionIO Scala API 0.11.0 - incubating - org.apache.predictionio.controller.PDataSource" />
+          <meta name="keywords" content="PDataSource PredictionIO Scala API 0.11.0 incubating org.apache.predictionio.controller.PDataSource" />
+          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+          
+      <link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
+      <link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
+      <script type="text/javascript">
+         if(top === self) {
+            var url = '../../../../index.html';
+            var hash = 'org.apache.predictionio.controller.PDataSource';
+            var anchor = window.location.hash;
+            var anchor_opt = '';
+            if (anchor.length >= 1)
+              anchor_opt = '@' + anchor.substring(1);
+            window.location.href = url + '#' + hash + anchor_opt;
+         }
+   	  </script>
+    
+        </head>
+        <body class="type">
+      <div id="definition">
+        <img src="../../../../lib/class_big.png" />
+        <p id="owner"><a href="../../../package.html" class="extype" name="org">org</a>.<a href="../../package.html" class="extype" name="org.apache">apache</a>.<a href="../package.html" class="extype" name="org.apache.predictionio">predictionio</a>.<a href="package.html" class="extype" name="org.apache.predictionio.controller">controller</a></p>
+        <h1>PDataSource</h1>
+      </div>
+
+      <h4 id="signature" class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">abstract </span>
+        <span class="kind">class</span>
+      </span>
+      <span class="symbol">
+        <span class="name">PDataSource</span><span class="tparams">[<span name="TD">TD</span>, <span name="EI">EI</span>, <span name="Q">Q</span>, <span name="A">A</span>]</span><span class="result"> extends <a href="../core/BaseDataSource.html" class="extype" name="org.apache.predictionio.core.BaseDataSource">BaseDataSource</a>[<span class="extype" name="org.apache.predictionio.controller.PDataSource.TD">TD</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.EI">EI</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.Q">Q</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.A">A</span>]</span>
+      </span>
+      </h4>
+      
+          <div id="comment" class="fullcommenttop"><div class="comment cmt"><p>Base class of a parallel data source.</p><p>A parallel data source runs locally within a single machine, or in parallel
+on a cluster, to return data that is distributed across a cluster.
+</p></div><dl class="paramcmts block"><dt class="tparam">TD</dt><dd class="cmt"><p>Training data class.</p></dd><dt class="tparam">EI</dt><dd class="cmt"><p>Evaluation Info class.</p></dd><dt class="tparam">Q</dt><dd class="cmt"><p>Input query class.</p></dd><dt class="tparam">A</dt><dd class="cmt"><p>Actual value class.</p></dd></dl><div class="toggleContainer block">
+          <span class="toggle">Linear Supertypes</span>
+          <div class="superTypes hiddenContent"><a href="../core/BaseDataSource.html" class="extype" name="org.apache.predictionio.core.BaseDataSource">BaseDataSource</a>[<span class="extype" name="org.apache.predictionio.controller.PDataSource.TD">TD</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.EI">EI</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.Q">Q</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.A">A</span>], <a href="../core/AbstractDoer.html" class="extype" name="org.apache.predictionio.core.AbstractDoer">AbstractDoer</a>, <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Serializable" class="extype" target="_top">Serializable</a>, <span class="extype" name="java.io.Serializable">Serializable</span>, <span class="extype" name="scala.AnyRef">AnyRef</span>, <span class="extype" name="scala.Any">Any</span></div>
+        </div></div>
+        
+
+      <div id="mbrsel">
+        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
+        <div id="order">
+              <span class="filtertype">Ordering</span>
+              <ol>
+                
+                <li class="alpha in"><span>Alphabetic</span></li>
+                <li class="inherit out"><span>By inheritance</span></li>
+              </ol>
+            </div>
+        <div id="ancestors">
+                <span class="filtertype">Inherited<br />
+                </span>
+                <ol id="linearization">
+                  <li class="in" name="org.apache.predictionio.controller.PDataSource"><span>PDataSource</span></li><li class="in" name="org.apache.predictionio.core.BaseDataSource"><span>BaseDataSource</span></li><li class="in" name="org.apache.predictionio.core.AbstractDoer"><span>AbstractDoer</span></li><li class="in" name="scala.Serializable"><span>Serializable</span></li><li class="in" name="java.io.Serializable"><span>Serializable</span></li><li class="in" name="scala.AnyRef"><span>AnyRef</span></li><li class="in" name="scala.Any"><span>Any</span></li>
+                </ol>
+              </div><div id="ancestors">
+            <span class="filtertype"></span>
+            <ol>
+              <li class="hideall out"><span>Hide All</span></li>
+              <li class="showall in"><span>Show all</span></li>
+            </ol>
+            <a href="http://docs.scala-lang.org/overviews/scaladoc/usage.html#members" target="_blank">Learn more about member selection</a>
+          </div>
+        <div id="visbl">
+            <span class="filtertype">Visibility</span>
+            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
+          </div>
+      </div>
+
+      <div id="template">
+        <div id="allMembers">
+        <div id="constructors" class="members">
+              <h3>Instance Constructors</h3>
+              <ol><li name="org.apache.predictionio.controller.PDataSource#&lt;init&gt;" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
+      <a id="&lt;init&gt;():org.apache.predictionio.controller.PDataSource[TD,EI,Q,A]"></a>
+      <a id="&lt;init&gt;:PDataSource[TD,EI,Q,A]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">new</span>
+      </span>
+      <span class="symbol">
+        <span class="name">PDataSource</span><span class="params">()</span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt"></p>
+    </li></ol>
+            </div>
+
+        
+
+        <div id="values" class="values members">
+              <h3>Abstract Value Members</h3>
+              <ol><li name="org.apache.predictionio.controller.PDataSource#readTraining" visbl="pub" data-isabs="true" fullComment="no" group="Ungrouped">
+      <a id="readTraining(sc:org.apache.spark.SparkContext):TD"></a>
+      <a id="readTraining(SparkContext):TD"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">abstract </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">readTraining</span><span class="params">(<span name="sc">sc: <span class="extype" name="org.apache.spark.SparkContext">SparkContext</span></span>)</span><span class="result">: <span class="extype" name="org.apache.predictionio.controller.PDataSource.TD">TD</span></span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">Implement this method to only return training data from a data source</p>
+    </li></ol>
+            </div>
+
+        <div id="values" class="values members">
+              <h3>Concrete Value Members</h3>
+              <ol><li name="scala.AnyRef#!=" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="!=(x$1:AnyRef):Boolean"></a>
+      <a id="!=(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $bang$eq" class="name">!=</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.Any#!=" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="!=(x$1:Any):Boolean"></a>
+      <a id="!=(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $bang$eq" class="name">!=</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.AnyRef###" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="##():Int"></a>
+      <a id="##():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $hash$hash" class="name">##</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Int" class="extype" target="_top">Int</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#==" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="==(x$1:AnyRef):Boolean"></a>
+      <a id="==(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $eq$eq" class="name">==</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.Any#==" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="==(x$1:Any):Boolean"></a>
+      <a id="==(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span title="gt4s: $eq$eq" class="name">==</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.Any#asInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="asInstanceOf[T0]:T0"></a>
+      <a id="asInstanceOf[T0]:T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">asInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Any.asInstanceOf.T0">T0</span></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.AnyRef#clone" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="clone():Object"></a>
+      <a id="clone():AnyRef"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">clone</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.AnyRef">AnyRef</span></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.CloneNotSupportedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#eq" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="eq(x$1:AnyRef):Boolean"></a>
+      <a id="eq(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">eq</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#equals" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="equals(x$1:Any):Boolean"></a>
+      <a id="equals(Any):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">equals</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#finalize" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="finalize():Unit"></a>
+      <a id="finalize():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">finalize</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="symbol">classOf[java.lang.Throwable]</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#getClass" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="getClass():Class[_]"></a>
+      <a id="getClass():Class[_]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">getClass</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.Class">Class</span>[_]</span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#hashCode" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="hashCode():Int"></a>
+      <a id="hashCode():Int"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">hashCode</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Int" class="extype" target="_top">Int</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.Any#isInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <a id="isInstanceOf[T0]:Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">isInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
+    </li><li name="scala.AnyRef#ne" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="ne(x$1:AnyRef):Boolean"></a>
+      <a id="ne(AnyRef):Boolean"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">ne</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Boolean" class="extype" target="_top">Boolean</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notify" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notify():Unit"></a>
+      <a id="notify():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notify</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#notifyAll" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="notifyAll():Unit"></a>
+      <a id="notifyAll():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">notifyAll</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="org.apache.predictionio.controller.PDataSource#readEval" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="readEval(sc:org.apache.spark.SparkContext):Seq[(TD,EI,org.apache.spark.rdd.RDD[(Q,A)])]"></a>
+      <a id="readEval(SparkContext):Seq[(TD,EI,RDD[(Q,A)])]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">readEval</span><span class="params">(<span name="sc">sc: <span class="extype" name="org.apache.spark.SparkContext">SparkContext</span></span>)</span><span class="result">: <span class="extype" name="scala.Seq">Seq</span>[(<span class="extype" name="org.apache.predictionio.controller.PDataSource.TD">TD</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.EI">EI</span>, <span class="extype" name="org.apache.spark.rdd.RDD">RDD</span>[(<span class="extype" name="org.apache.predictionio.controller.PDataSource.Q">Q</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.A">A</span>)])]</span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">To provide evaluation feature for your engine, your must override this
+method to return data for evaluation from a data source.</p><div class="fullcomment"><div class="comment cmt"><p>To provide evaluation feature for your engine, your must override this
+method to return data for evaluation from a data source. Returned data can
+optionally include a sequence of query and actual value pairs for
+evaluation purpose.</p><p>The default implementation returns an empty sequence as a stub, so that
+an engine can be compiled without implementing evaluation.
+</p></div></div>
+    </li><li name="org.apache.predictionio.controller.PDataSource#readEvalBase" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="readEvalBase(sc:org.apache.spark.SparkContext):Seq[(TD,EI,org.apache.spark.rdd.RDD[(Q,A)])]"></a>
+      <a id="readEvalBase(SparkContext):Seq[(TD,EI,RDD[(Q,A)])]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">readEvalBase</span><span class="params">(<span name="sc">sc: <span class="extype" name="org.apache.spark.SparkContext">SparkContext</span></span>)</span><span class="result">: <span class="extype" name="scala.Seq">Seq</span>[(<span class="extype" name="org.apache.predictionio.controller.PDataSource.TD">TD</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.EI">EI</span>, <span class="extype" name="org.apache.spark.rdd.RDD">RDD</span>[(<span class="extype" name="org.apache.predictionio.controller.PDataSource.Q">Q</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.A">A</span>)])]</span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">:: DeveloperApi ::
+Engine developer should not use this directly.</p><div class="fullcomment"><div class="comment cmt"><p>:: DeveloperApi ::
+Engine developer should not use this directly. This is called by
+evaluation workflow to read training and validation data.
+</p></div><dl class="paramcmts block"><dt class="param">sc</dt><dd class="cmt"><p>Spark context</p></dd><dt>returns</dt><dd class="cmt"><p>Sets of training data, evaluation information, queries, and actual
+        results
+</p></dd></dl><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.predictionio.controller.PDataSource">PDataSource</a> → <a href="../core/BaseDataSource.html" class="extype" name="org.apache.predictionio.core.BaseDataSource">BaseDataSource</a></dd></dl></div>
+    </li><li name="org.apache.predictionio.controller.PDataSource#readTrainingBase" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="readTrainingBase(sc:org.apache.spark.SparkContext):TD"></a>
+      <a id="readTrainingBase(SparkContext):TD"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">readTrainingBase</span><span class="params">(<span name="sc">sc: <span class="extype" name="org.apache.spark.SparkContext">SparkContext</span></span>)</span><span class="result">: <span class="extype" name="org.apache.predictionio.controller.PDataSource.TD">TD</span></span>
+      </span>
+      </h4>
+      <p class="shortcomment cmt">:: DeveloperApi ::
+Engine developer should not use this directly.</p><div class="fullcomment"><div class="comment cmt"><p>:: DeveloperApi ::
+Engine developer should not use this directly. This is called by workflow
+to read training data.
+</p></div><dl class="paramcmts block"><dt class="param">sc</dt><dd class="cmt"><p>Spark context</p></dd><dt>returns</dt><dd class="cmt"><p>Training data
+</p></dd></dl><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="" class="extype" name="org.apache.predictionio.controller.PDataSource">PDataSource</a> → <a href="../core/BaseDataSource.html" class="extype" name="org.apache.predictionio.core.BaseDataSource">BaseDataSource</a></dd></dl></div>
+    </li><li name="scala.AnyRef#synchronized" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="synchronized[T0](x$1:=&gt;T0):T0"></a>
+      <a id="synchronized[T0](⇒T0):T0"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">synchronized</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="params">(<span name="arg0">arg0: ⇒ <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>)</span><span class="result">: <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
+    </li><li name="scala.AnyRef#toString" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="toString():String"></a>
+      <a id="toString():String"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">toString</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.String">String</span></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait():Unit"></a>
+      <a id="wait():Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">()</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long,x$2:Int):Unit"></a>
+      <a id="wait(Long,Int):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Long" class="extype" target="_top">Long</a></span>, <span name="arg1">arg1: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Int" class="extype" target="_top">Int</a></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="wait(x$1:Long):Unit"></a>
+      <a id="wait(Long):Unit"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier">final </span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Long" class="extype" target="_top">Long</a></span>)</span><span class="result">: <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Unit" class="extype" target="_top">Unit</a></span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
+                <span class="name">@throws</span><span class="args">(<span>
+      
+      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
+    </span>)</span>
+              
+        </dd></dl></div>
+    </li></ol>
+            </div>
+
+        
+
+        <div id="values" class="values members">
+              <h3>Deprecated Value Members</h3>
+              <ol><li name="org.apache.predictionio.controller.PDataSource#read" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
+      <a id="read(sc:org.apache.spark.SparkContext):Seq[(TD,EI,org.apache.spark.rdd.RDD[(Q,A)])]"></a>
+      <a id="read(SparkContext):Seq[(TD,EI,RDD[(Q,A)])]"></a>
+      <h4 class="signature">
+      <span class="modifier_kind">
+        <span class="modifier"></span>
+        <span class="kind">def</span>
+      </span>
+      <span class="symbol">
+        <span class="name deprecated" title="Deprecated: (Since version 0.9.0) Use readEval() instead.">read</span><span class="params">(<span name="sc">sc: <span class="extype" name="org.apache.spark.SparkContext">SparkContext</span></span>)</span><span class="result">: <span class="extype" name="scala.Seq">Seq</span>[(<span class="extype" name="org.apache.predictionio.controller.PDataSource.TD">TD</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.EI">EI</span>, <span class="extype" name="org.apache.spark.rdd.RDD">RDD</span>[(<span class="extype" name="org.apache.predictionio.controller.PDataSource.Q">Q</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.A">A</span>)])]</span>
+      </span>
+      </h4>
+      <div class="fullcomment"><dl class="attributes block"> <dt>Annotations</dt><dd>
+                <span class="name">@deprecated</span>
+              
+        </dd><dt>Deprecated</dt><dd class="cmt"><p><i>(Since version 0.9.0)</i> Use readEval() instead.</p></dd></dl></div>
+    </li></ol>
+            </div>
+        </div>
+
+        <div id="inheritedMembers">
+        <div class="parent" name="org.apache.predictionio.core.BaseDataSource">
+              <h3>Inherited from <a href="../core/BaseDataSource.html" class="extype" name="org.apache.predictionio.core.BaseDataSource">BaseDataSource</a>[<span class="extype" name="org.apache.predictionio.controller.PDataSource.TD">TD</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.EI">EI</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.Q">Q</span>, <span class="extype" name="org.apache.predictionio.controller.PDataSource.A">A</span>]</h3>
+            </div><div class="parent" name="org.apache.predictionio.core.AbstractDoer">
+              <h3>Inherited from <a href="../core/AbstractDoer.html" class="extype" name="org.apache.predictionio.core.AbstractDoer">AbstractDoer</a></h3>
+            </div><div class="parent" name="scala.Serializable">
+              <h3>Inherited from <a href="http://www.scala-lang.org/api/2.10.6/index.html#scala.Serializable" class="extype" target="_top">Serializable</a></h3>
+            </div><div class="parent" name="java.io.Serializable">
+              <h3>Inherited from <span class="extype" name="java.io.Serializable">Serializable</span></h3>
+            </div><div class="parent" name="scala.AnyRef">
+              <h3>Inherited from <span class="extype" name="scala.AnyRef">AnyRef</span></h3>
+            </div><div class="parent" name="scala.Any">
+              <h3>Inherited from <span class="extype" name="scala.Any">Any</span></h3>
+            </div>
+        
+        </div>
+
+        <div id="groupedMembers">
+        <div class="group" name="Ungrouped">
+              <h3>Ungrouped</h3>
+              
+            </div>
+        </div>
+
+      </div>
+
+      <div id="tooltip"></div>
+
+      <div id="footer">  </div>
+      <script defer="defer" type="text/javascript" id="jquery-js" src="../../../../lib/jquery.js"></script><script defer="defer" type="text/javascript" id="jquery-ui-js" src="../../../../lib/jquery-ui.js"></script><script defer="defer" type="text/javascript" id="tools-tooltip-js" src="../../../../lib/tools.tooltip.js"></script><script defer="defer" type="text/javascript" id="template-js" src="../../../../lib/template.js"></script>
+    </body>
+      </html>
\ No newline at end of file