Author: buildbot
Date: Sun Aug 11 01:35:05 2013
New Revision: 874076
Log:
Staging update by buildbot for gora
Modified:
websites/staging/gora/trunk/content/ (props changed)
websites/staging/gora/trunk/content/current/tutorial.html
Propchange: websites/staging/gora/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sun Aug 11 01:35:05 2013
@@ -1 +1 @@
-1512658
+1512845
Modified: websites/staging/gora/trunk/content/current/tutorial.html
==============================================================================
--- websites/staging/gora/trunk/content/current/tutorial.html (original)
+++ websites/staging/gora/trunk/content/current/tutorial.html Sun Aug 11
01:35:05 2013
@@ -724,12 +724,12 @@ are returned via the Result interface. L
the LogManager class.</p>
<div class="codehilite"><pre><span class="cm">/** Queries and prints pageview
object that have keys between startKey and endKey*/</span>
<span class="n">private</span> <span class="k">void</span> <span
class="n">query</span><span class="p">(</span><span class="n">long</span> <span
class="n">startKey</span><span class="p">,</span> <span class="n">long</span>
<span class="n">endKey</span><span class="p">)</span> <span
class="n">throws</span> <span class="n">IOException</span> <span
class="p">{</span>
- <span class="n">Query</span><span class="o">&</span><span
class="n">lt</span><span class="p">;</span><span class="n">Long</span><span
class="p">,</span> <span class="n">Pageview</span><span
class="o">&</span><span class="n">gt</span><span class="p">;</span> <span
class="n">query</span> <span class="o">=</span> <span
class="n">dataStore</span><span class="p">.</span><span
class="n">newQuery</span><span class="p">();</span>
+ <span class="n">Query</span><span class="o"><</span><span
class="n">Long</span><span class="p">,</span> <span
class="n">Pageview</span><span class="o">></span> <span
class="n">query</span> <span class="o">=</span> <span
class="n">dataStore</span><span class="p">.</span><span
class="n">newQuery</span><span class="p">();</span>
<span class="c1">//set the properties of query</span>
<span class="n">query</span><span class="p">.</span><span
class="n">setStartKey</span><span class="p">(</span><span
class="n">startKey</span><span class="p">);</span>
<span class="n">query</span><span class="p">.</span><span
class="n">setEndKey</span><span class="p">(</span><span
class="n">endKey</span><span class="p">);</span>
- <span class="n">Result</span><span class="o">&</span><span
class="n">lt</span><span class="p">;</span><span class="n">Long</span><span
class="p">,</span> <span class="n">Pageview</span><span
class="o">&</span><span class="n">gt</span><span class="p">;</span> <span
class="n">result</span> <span class="o">=</span> <span
class="n">query</span><span class="p">.</span><span
class="n">execute</span><span class="p">();</span>
+ <span class="n">Result</span><span class="o"><</span><span
class="n">Long</span><span class="p">,</span> <span
class="n">Pageview</span><span class="o">></span> <span
class="n">result</span> <span class="o">=</span> <span
class="n">query</span><span class="p">.</span><span
class="n">execute</span><span class="p">();</span>
<span class="n">printResult</span><span class="p">(</span><span
class="n">result</span><span class="p">);</span>
<span class="p">}</span>
@@ -742,7 +742,7 @@ the Result object.</p>
<p>Result interface allows us to iterate the results one by one by calling the
next() method. The getKey() method returns the current key and get()
returns current persistent object.</p>
-<div class="codehilite"><pre><span class="n">private</span> <span
class="n">void</span> <span class="n">printResult</span><span
class="p">(</span><span class="n">Result</span><span
class="o">&</span><span class="n">lt</span><span class="p">;</span><span
class="n">Long</span><span class="p">,</span> <span
class="n">Pageview</span><span class="o">&</span><span
class="n">gt</span><span class="p">;</span> <span class="n">result</span><span
class="p">)</span> <span class="n">throws</span> <span
class="n">IOException</span> <span class="p">{</span>
+<div class="codehilite"><pre><span class="n">private</span> <span
class="n">void</span> <span class="n">printResult</span><span
class="p">(</span><span class="n">Result</span><span class="o"><</span><span
class="n">Long</span><span class="p">,</span> <span
class="n">Pageview</span><span class="o">></span> <span
class="n">result</span><span class="p">)</span> <span class="n">throws</span>
<span class="n">IOException</span> <span class="p">{</span>
<span class="k">while</span><span class="p">(</span><span
class="n">result</span><span class="p">.</span><span class="n">next</span><span
class="p">())</span> <span class="p">{</span> <span class="o">//</span><span
class="n">advances</span> <span class="n">the</span> <span
class="n">Result</span> <span class="n">object</span> <span
class="n">and</span> <span class="n">breaks</span> <span class="k">if</span>
<span class="n">at</span> <span class="k">end</span>
<span class="n">long</span> <span class="n">resultKey</span> <span
class="p">=</span> <span class="n">result</span><span class="p">.</span><span
class="n">getKey</span><span class="p">();</span> <span
class="o">//</span><span class="n">obtain</span> <span class="n">current</span>
<span class="n">key</span>
@@ -809,7 +809,7 @@ Continueing from the LogManager class, t
<span class="cm">/** This method illustrates delete by query call */</span>
<span class="n">private</span> <span class="k">void</span> <span
class="n">deleteByQuery</span><span class="p">(</span><span
class="n">long</span> <span class="n">startKey</span><span class="p">,</span>
<span class="n">long</span> <span class="n">endKey</span><span
class="p">)</span> <span class="n">throws</span> <span
class="n">IOException</span> <span class="p">{</span>
<span class="c1">//Constructs a query from the dataStore. The matching rows
to this query will be deleted</span>
- <span class="n">Query</span><span class="o">&</span><span
class="n">lg</span><span class="p">;</span><span class="n">Long</span><span
class="p">,</span> <span class="n">Pageview</span><span
class="o">&</span><span class="n">gt</span><span class="p">;</span> <span
class="n">query</span> <span class="o">=</span> <span
class="n">dataStore</span><span class="p">.</span><span
class="n">newQuery</span><span class="p">();</span>
+ <span class="n">Query</span><span class="o"><</span><span
class="n">Long</span><span class="p">,</span> <span
class="n">Pageview</span><span class="o">></span> <span
class="n">query</span> <span class="o">=</span> <span
class="n">dataStore</span><span class="p">.</span><span
class="n">newQuery</span><span class="p">();</span>
<span class="c1">//set the properties of query</span>
<span class="n">query</span><span class="p">.</span><span
class="n">setStartKey</span><span class="p">(</span><span
class="n">startKey</span><span class="p">);</span>
<span class="n">query</span><span class="p">.</span><span
class="n">setEndKey</span><span class="p">(</span><span
class="n">endKey</span><span class="p">);</span>
@@ -850,7 +850,7 @@ If you want to continue with HBase, you
<p>First we need to download HSQL dependencies. For that, ensure that the
hsqldb
dependency is available in the Maven pom.xml.
Ofcourse MySQL users should uncomment the mysql dependency instead. </p>
-<div class="codehilite"><pre><span class="o">&</span><span
class="n">lt</span><span class="p">;</span>!<span class="o">--&</span><span
class="n">lt</span><span class="p">;</span><span class="n">dependency</span>
<span class="n">org</span><span class="p">=</span>"<span
class="n">org</span><span class="p">.</span><span class="n">hsqldb</span>"
<span class="n">name</span><span class="p">=</span>"<span
class="n">hsqldb</span>" <span class="n">rev</span><span
class="p">=</span>"2<span class="p">.</span>0<span
class="p">.</span>0" <span class="n">conf</span><span
class="p">=</span>"<span class="o">*-></span><span
class="n">default</span>"<span class="o">/&</span><span
class="n">gt</span><span class="p">;</span><span class="o">--&</span><span
class="n">gt</span><span class="p">;</span>
+<div class="codehilite"><pre><span class="o"><</span>!<span
class="o">--<</span><span class="n">dependency</span> <span
class="n">org</span><span class="p">=</span>"<span
class="n">org</span><span class="p">.</span><span class="n">hsqldb</span>"
<span class="n">name</span><span class="p">=</span>"<span
class="n">hsqldb</span>" <span class="n">rev</span><span
class="p">=</span>"2<span class="p">.</span>0<span
class="p">.</span>0" <span class="n">conf</span><span
class="p">=</span>"<span class="o">*-></span><span
class="n">default</span>"<span class="o">/>--></span>
</pre></div>
@@ -906,15 +906,15 @@ demonstrate the SQL backend. </p>
<p>Similar to what we have seen with HBase, gora-sql plugin reads
configuration from the
gora-sql-mappings.xml file.
Specifically, we will use the gora-tutorial/conf/gora-sql-mappings.xml file.
</p>
-<div class="codehilite"><pre><span class="o">&</span><span
class="n">lt</span><span class="p">;</span><span class="n">gora</span><span
class="o">-</span><span class="n">orm</span><span class="o">&</span><span
class="n">gt</span><span class="p">;</span>
- <span class="p">...</span>
- <span class="o">&</span><span class="n">lt</span><span
class="p">;</span><span class="n">class</span> <span class="n">name</span><span
class="p">=</span>"<span class="n">org</span><span class="p">.</span><span
class="n">apache</span><span class="p">.</span><span class="n">gora</span><span
class="p">.</span><span class="n">tutorial</span><span class="p">.</span><span
class="nb">log</span><span class="p">.</span><span
class="n">generated</span><span class="p">.</span><span
class="n">MetricDatum</span>" <span class="n">keyClass</span><span
class="p">=</span>"<span class="n">java</span><span
class="p">.</span><span class="n">lang</span><span class="p">.</span><span
class="n">String</span>" <span class="n">table</span><span
class="p">=</span>"<span class="n">Metrics</span>"<span
class="o">&</span><span class="n">gt</span><span class="p">;</span>
- <span class="o">&</span><span class="n">lt</span><span
class="p">;</span><span class="n">primarykey</span> <span
class="n">column</span><span class="p">=</span>"<span
class="n">id</span>" <span class="nb">length</span><span
class="p">=</span>"512"<span class="o">/&</span><span
class="n">gt</span><span class="p">;</span>
- <span class="o">&</span><span class="n">lt</span><span
class="p">;</span><span class="n">field</span> <span class="n">name</span><span
class="p">=</span>"<span class="n">metricDimension</span>" <span
class="n">column</span><span class="p">=</span>"<span
class="n">metricDimension</span>" <span class="nb">length</span><span
class="p">=</span>"512"<span class="o">/&</span><span
class="n">gt</span><span class="p">;</span>
- <span class="o">&</span><span class="n">lt</span><span
class="p">;</span><span class="n">field</span> <span class="n">name</span><span
class="p">=</span>"<span class="n">timestamp</span>" <span
class="n">column</span><span class="p">=</span>"<span
class="n">ts</span>"<span class="o">/&</span><span
class="n">gt</span><span class="p">;</span>
- <span class="o">&</span><span class="n">lt</span><span
class="p">;</span><span class="n">field</span> <span class="n">name</span><span
class="p">=</span>"<span class="n">metric</span>" <span
class="n">column</span><span class="p">=</span>"<span
class="n">metric</span><span class="o">/&</span><span
class="n">gt</span><span class="p">;</span>
- <span class="o">&</span><span class="n">lt</span><span
class="p">;</span><span class="o">/</span><span class="n">class</span><span
class="o">&</span><span class="n">gt</span><span class="p">;</span>
-<span class="o">&</span><span class="n">lt</span><span
class="p">;</span><span class="o">/</span><span class="n">gora</span><span
class="o">-</span><span class="n">orm</span><span class="o">&</span><span
class="n">gt</span><span class="p">;</span>
+<div class="codehilite"><pre><span class="nt"><gora-orm></span>
+ ...
+ <span class="nt"><class</span> <span class="na">name=</span><span
class="s">"org.apache.gora.tutorial.log.generated.MetricDatum"</span>
<span class="na">keyClass=</span><span
class="s">"java.lang.String"</span> <span
class="na">table=</span><span class="s">"Metrics"</span><span
class="nt">></span>
+ <span class="nt"><primarykey</span> <span
class="na">column=</span><span class="s">"id"</span> <span
class="na">length=</span><span class="s">"512"</span><span
class="nt">/></span>
+ <span class="nt"><field</span> <span class="na">name=</span><span
class="s">"metricDimension"</span> <span
class="na">column=</span><span class="s">"metricDimension"</span>
<span class="na">length=</span><span class="s">"512"</span><span
class="nt">/></span>
+ <span class="nt"><field</span> <span class="na">name=</span><span
class="s">"timestamp"</span> <span class="na">column=</span><span
class="s">"ts"</span><span class="nt">/></span>
+ <span class="nt"><field</span> <span class="na">name=</span><span
class="s">"metric"</span> <span class="na">column=</span><span
class="s">"metric/</span><span class="nt">></span>
+ <span class="nt"></class></span>
+<span class="nt"></gora-orm></span>
</pre></div>
@@ -949,8 +949,8 @@ function as well. GoraReducer#initReduce
the data store to store the job's output as well as the actual reducer class.
initMapperJob and initReducerJob functions have also overriden methods that
take the data store class
rather than data store instances.</p>
-<div class="codehilite"><pre> <span class="n">public</span> <span
class="n">Job</span> <span class="n">createJob</span><span
class="p">(</span><span class="n">DataStore</span><span
class="o">&</span><span class="n">lt</span><span class="p">;</span><span
class="n">Long</span><span class="p">,</span> <span
class="n">Pageview</span><span class="o">&</span><span
class="n">gt</span><span class="p">;</span> <span class="n">inStore</span>
- <span class="p">,</span> <span class="n">DataStore</span><span
class="o">&</span><span class="n">lt</span><span class="p">;</span><span
class="n">String</span><span class="p">,</span> <span
class="n">MetricDatum</span><span class="o">&</span><span
class="n">gt</span><span class="p">;</span> <span
class="n">outStore</span><span class="p">,</span> <span class="n">int</span>
<span class="n">numReducer</span><span class="p">)</span> <span
class="n">throws</span> <span class="n">IOException</span> <span
class="p">{</span>
+<div class="codehilite"><pre> <span class="n">public</span> <span
class="n">Job</span> <span class="n">createJob</span><span
class="p">(</span><span class="n">DataStore</span><span
class="o"><</span><span class="n">Long</span><span class="p">,</span> <span
class="n">Pageview</span><span class="o">></span> <span
class="n">inStore</span>
+ <span class="p">,</span> <span class="n">DataStore</span><span
class="o"><</span><span class="n">String</span><span class="p">,</span>
<span class="n">MetricDatum</span><span class="o">></span> <span
class="n">outStore</span><span class="p">,</span> <span class="n">int</span>
<span class="n">numReducer</span><span class="p">)</span> <span
class="n">throws</span> <span class="n">IOException</span> <span
class="p">{</span>
<span class="n">Job</span> <span class="n">job</span> <span
class="p">=</span> <span class="n">new</span> <span class="n">Job</span><span
class="p">(</span><span class="n">getConf</span><span class="p">());</span>
<span class="n">job</span><span class="p">.</span><span
class="n">setJobName</span><span class="p">(</span>"<span
class="n">Log</span> <span class="n">Analytics</span>"<span
class="p">);</span>
@@ -1012,7 +1012,7 @@ just sums up all the values that corresp
Then the metric dimension object is constructed and emitted, which
will be stored at the output data store. </p>
<div class="codehilite"><pre><span class="n">protected</span> <span
class="n">void</span> <span class="n">reduce</span><span
class="p">(</span><span class="n">TextLong</span> <span class="n">tuple</span>
- <span class="p">,</span> <span class="n">Iterable</span><span
class="o">&</span><span class="n">lt</span><span class="p">;</span><span
class="n">LongWritable</span><span class="o">&</span><span
class="n">gt</span><span class="p">;</span> <span class="n">values</span><span
class="p">,</span> <span class="n">Context</span> <span
class="n">context</span><span class="p">)</span>
+ <span class="p">,</span> <span class="n">Iterable</span><span
class="o"><</span><span class="n">LongWritable</span><span
class="o">></span> <span class="n">values</span><span class="p">,</span>
<span class="n">Context</span> <span class="n">context</span><span
class="p">)</span>
<span class="n">throws</span> <span class="n">IOException</span> <span
class="p">,</span><span class="n">InterruptedException</span> <span
class="p">{</span>
<span class="n">long</span> <span class="n">sum</span> <span
class="p">=</span> 0<span class="n">L</span><span class="p">;</span> <span
class="o">//</span><span class="n">sum</span> <span class="n">up</span> <span
class="n">the</span> <span class="n">values</span>
@@ -1037,7 +1037,7 @@ will be stored at the output data store.
<h3 id="running-the-job">Running the job</h3>
<p>Now that the job is constructed, we can run the Hadoop job as usual. Note
that the run function
of the LogAnalytics class parses the arguments and runs the job. We can run
the program by </p>
-<div class="codehilite"><pre>$ <span class="n">bin</span><span
class="o">/</span><span class="n">gora</span> <span
class="n">loganalytics</span> <span class="p">[</span><span
class="o">&</span><span class="n">lt</span><span class="p">;</span><span
class="n">input</span> <span class="n">data</span> <span
class="n">store</span><span class="o">&</span><span
class="n">gt</span><span class="p">;</span> <span class="p">[</span><span
class="o">&</span><span class="n">lt</span><span class="p">;</span><span
class="n">output</span> <span class="n">data</span> <span
class="n">store</span><span class="o">&</span><span
class="n">gt</span><span class="p">;]]</span>
+<div class="codehilite"><pre>$ <span class="n">bin</span><span
class="o">/</span><span class="n">gora</span> <span
class="n">loganalytics</span> <span class="p">[</span><span
class="o"><</span><span class="n">input</span> <span class="n">data</span>
<span class="n">store</span><span class="o">></span> <span
class="p">[</span><span class="o"><</span><span class="n">output</span>
<span class="n">data</span> <span class="n">store</span><span
class="o">></span><span class="p">]]</span>
</pre></div>
@@ -1116,7 +1116,7 @@ under various Gora modules. All the modu
under which some example classes can be found. Especially, there are some
classes that are used for tests under
<gora-core>/src/examples/</p>
<p>Second, various unit tests of Gora modules can be referred to see the API
in use. The unit tests can be found
-at <gora-module>/src/test/</p>
+at <gora-module>/src/test/</p>
<p>The source code for the projects using Gora can also be checked out as a
reference. <a href="http://nutch.apache.org">Apache Nutch</a> is
one of the first class users of Gora; so looking into how Nutch uses Gora is
always a good idea.</p>
<p>Please feel free to grab our <a
href="http://gora.apache.org/images/powered-by-gora.png">poweredBy</a> sticker
and embedded it in anything backed by Apache Gora.</p>