This is an automated email from the ASF dual-hosted git repository. git-site-role pushed a commit to branch asf-staging in repository https://gitbox.apache.org/repos/asf/accumulo-website.git
The following commit(s) were added to refs/heads/asf-staging by this push: new 99cf7f9 Automatic Site Publish by Buildbot 99cf7f9 is described below commit 99cf7f9fd3671c5b245aff57fac9006909967ccb Author: buildbot <us...@infra.apache.org> AuthorDate: Thu Jan 21 00:42:30 2021 +0000 Automatic Site Publish by Buildbot --- output/feed.xml | 4 +- output/tour/authorizations-code/index.html | 38 ++++++++-------- output/tour/authorizations/index.html | 62 +++++++++++++------------ output/tour/basic-read-write/index.html | 24 +++++----- output/tour/batch-scanner-code/index.html | 63 +++++++++++++------------- output/tour/batch-scanner/index.html | 31 +++++++------ output/tour/client/index.html | 6 +-- output/tour/conditional-writer-code/index.html | 3 +- output/tour/conditional-writer/index.html | 24 +++++----- output/tour/data-model-code/index.html | 25 +++++----- output/tour/data-model/index.html | 2 +- output/tour/getting-started/index.html | 8 ++-- output/tour/ranges-splits/index.html | 12 ++--- 13 files changed, 151 insertions(+), 151 deletions(-) diff --git a/output/feed.xml b/output/feed.xml index b234af1..713a64c 100644 --- a/output/feed.xml +++ b/output/feed.xml @@ -6,8 +6,8 @@ </description> <link>https://accumulo.apache.org/</link> <atom:link href="https://accumulo.apache.org/feed.xml" rel="self" type="application/rss+xml"/> - <pubDate>Tue, 19 Jan 2021 19:36:44 +0000</pubDate> - <lastBuildDate>Tue, 19 Jan 2021 19:36:44 +0000</lastBuildDate> + <pubDate>Thu, 21 Jan 2021 00:42:23 +0000</pubDate> + <lastBuildDate>Thu, 21 Jan 2021 00:42:23 +0000</lastBuildDate> <generator>Jekyll v4.1.1</generator> diff --git a/output/tour/authorizations-code/index.html b/output/tour/authorizations-code/index.html index e20d777..fe0b50b 100644 --- a/output/tour/authorizations-code/index.html +++ b/output/tour/authorizations-code/index.html @@ -150,29 +150,31 @@ <div id="tour-content"> <p>Below is a solution for the exercise.</p> -<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> - <span class="c1">// create a table called "GothamPD".</span> +<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> + <span class="c1">// Create a table called "GothamPD".</span> <span class="n">client</span><span class="o">.</span><span class="na">tableOperations</span><span class="o">().</span><span class="na">create</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">);</span> - <span class="c1">// Create a "secretId" authorization & visibility</span> + <span class="c1">// Create a "secretId" authorization & visibility</span> <span class="kd">final</span> <span class="nc">String</span> <span class="n">secretId</span> <span class="o">=</span> <span class="s">"secretId"</span><span class="o">;</span> <span class="nc">Authorizations</span> <span class="n">auths</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Authorizations</span><span class="o">(</span><span class="n">secretId</span><span class="o">);</span> <span class="nc">ColumnVisibility</span> <span class="n">colVis</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ColumnVisibility</span><span class="o">(</span><span class="n">secretId</span><span class="o">);</span> - <span class="c1">// Create a user with the "secretId" authorization and grant him read permissions on our table</span> + <span class="c1">// Create a user with the "secretId" authorization and grant the commissioner read permissions on our table</span> <span class="n">client</span><span class="o">.</span><span class="na">securityOperations</span><span class="o">().</span><span class="na">createLocalUser</span><span class="o">(</span><span class="s">"commissioner"</span><span class="o">,</span> <span class="k">new</span> <span class="nc">PasswordToken</span><span class="o">(</span><span class="s">"gordonrocks"</span><span class="o">));</span> <span class="n">client</span><span class="o">.</span><span class="na">securityOperations</span><span class="o">().</span><span class="na">changeUserAuthorizations</span><span class="o">(</span><span class="s">"commissioner"</span><span class="o">,</span> <span class="n">auths</span><span class="o">);</span> <span class="n">client</span><span class="o">.</span><span class="na">securityOperations</span><span class="o">().</span><span class="na">grantTablePermission</span><span class="o">(</span><span class="s">"commissioner"</span><span class="o">,</span> <span class="s">"GothamPD"</span><span class="o">,</span> <span class="nc">TablePermission</span><span class="o">.</span><span class="na">READ</span><span class="o">);</span> - <span class="c1">// Create 3 Mutation objects, securing the proper columns.</span> + <span class="c1">// Create three Mutation objects, securing the proper columns.</span> <span class="nc">Mutation</span> <span class="n">mutation1</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Mutation</span><span class="o">(</span><span class="s">"id0001"</span><span class="o">);</span> <span class="n">mutation1</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"hero"</span><span class="o">,</span> <span class="s">"alias"</span><span class="o">,</span> <span class="s">"Batman"</span><span class="o">);</span> <span class="n">mutation1</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"hero"</span><span class="o">,</span> <span class="s">"name"</span><span class="o">,</span> <span class="n">colVis</span><span class="o">,</span> <span class="s">"Bruce Wayne"</span><span class="o">);</span> <span class="n">mutation1</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"hero"</span><span class="o">,</span> <span class="s">"wearsCape?"</span><span class="o">,</span> <span class="s">"true"</span><span class="o">);</span> + <span class="nc">Mutation</span> <span class="n">mutation2</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Mutation</span><span class="o">(</span><span class="s">"id0002"</span><span class="o">);</span> <span class="n">mutation2</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"hero"</span><span class="o">,</span> <span class="s">"alias"</span><span class="o">,</span> <span class="s">"Robin"</span><span class="o">);</span> <span class="n">mutation2</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"hero"</span><span class="o">,</span> <span class="s">"name"</span><span class="o">,</span> <span class="n">colVis</span><span class="o">,</span> <span class="s">"Dick Grayson"</span><span class="o">);</span> <span class="n">mutation2</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"hero"</span><span class="o">,</span> <span class="s">"wearsCape?"</span><span class="o">,</span> <span class="s">"true"</span><span class="o">);</span> + <span class="nc">Mutation</span> <span class="n">mutation3</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Mutation</span><span class="o">(</span><span class="s">"id0003"</span><span class="o">);</span> <span class="n">mutation3</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"alias"</span><span class="o">,</span> <span class="s">"Joker"</span><span class="o">);</span> <span class="n">mutation3</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"name"</span><span class="o">,</span> <span class="s">"Unknown"</span><span class="o">);</span> @@ -181,24 +183,22 @@ <span class="c1">// Create a BatchWriter to the GothamPD table and add your mutations to it.</span> <span class="c1">// Once the BatchWriter is closed by the try w/ resources, data will be available to scans.</span> <span class="k">try</span> <span class="o">(</span><span class="nc">BatchWriter</span> <span class="n">writer</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createBatchWriter</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">))</span> <span class="o">{</span> - <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation1</span><span class="o">);</span> - <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation2</span><span class="o">);</span> - <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation3</span><span class="o">);</span> + <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation1</span><span class="o">);</span> + <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation2</span><span class="o">);</span> + <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation3</span><span class="o">);</span> <span class="o">}</span> - <span class="c1">// Create a second client for the commissioner. Then print all the rows visibile to the</span> - <span class="c1">// commissioner. Make sure to pass the proper authorizations to the Scanner</span> - <span class="k">try</span> <span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">commishClient</span> <span class="o">=</span> <span class="nc">Accumulo</span><span class="o">.</span><span class="na">newClient</span><span class="o">().</span><span class="na">from</span><span class="o">(</span><span class="n">client</span><span class="o">.</span><span class="na">properties</span><span class="o">())</span> - <span class="o">.</span><span class="na">as</span><span class="o">(</span><span class="s">"commissioner"</span><span class="o">,</span> <span class="s">"gordonrocks"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span> - <span class="nc">Scanner</span> <span class="n">scan</span> <span class="o">=</span> <span class="n">commishClient</span><span class="o">.</span><span class="na">createScanner</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">,</span> <span class="n">auths</span><span class="o">))</span> <span class="o">{</span> - <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Gotham Police Department Persons of Interest:"</span><span class="o">);</span> - <span class="k">for</span> <span class="o">(</span><span class="nc">Map</span><span class="o">.</span><span class="na">Entry</span><span class="o"><</span><span class="nc">Key</span><span class="o">,</span> <span class="nc">Value</span><span class="o">></span> <span class="n">entry</span> <span class="o">:</span> <span class="n">scan</span><span class="o">)</span> <span class="o">{</span> - <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Key : %-60s Value : %s\n"</span><span class="o">,</span> <span class="n">entry</span><span class="o">.</span><span class="na">getKey</span><span class="o">(),</span> <span class="n">entry</span><span class="o">.</span><span class="na">getValue</span><span class="o">());</span> - <span class="o">}</span> + <span class="c1">// Create a second client for the commissioner user and output all the rows visible to them. </span> + <span class="c1">// Make sure to pass the proper authorizations.</span> + <span class="k">try</span> <span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">commishClient</span> <span class="o">=</span> <span class="nc">Accumulo</span><span class="o">.</span><span class="na">newClient</span><span class="o">().</span><span class="na">from</span><span class="o">(</span><span class="n">client</span><span class="o">.</span><span class="na">properties</span><span class="o">()).</span><span class="na">as</span><span class="o">(</span><span [...] + <span class="nc">Scanner</span> <span class="n">scan</span> <span class="o">=</span> <span class="n">commishClient</span><span class="o">.</span><span class="na">createScanner</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">,</span> <span class="n">auths</span><span class="o">);</span> + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Gotham Police Department Persons of Interest:"</span><span class="o">);</span> + <span class="k">for</span> <span class="o">(</span><span class="nc">Map</span><span class="o">.</span><span class="na">Entry</span><span class="o"><</span><span class="nc">Key</span><span class="o">,</span> <span class="nc">Value</span><span class="o">></span> <span class="n">entry</span> <span class="o">:</span> <span class="n">scan</span><span class="o">)</span> <span class="o">{</span> + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Key : %-50s Value : %s\n"</span><span class="o">,</span> <span class="n">entry</span><span class="o">.</span><span class="na">getKey</span><span class="o">(),</span> <span class="n">entry</span><span class="o">.</span><span class="na">getValue</span><span class="o">());</span> + <span class="o">}</span> <span class="o">}</span> -<span class="o">}</span> + <span class="o">}</span> </code></pre></div></div> - <p>The solution above will print (timestamp will differ):</p> <pre><code class="language-commandline">Gotham Police Department Persons of Interest: diff --git a/output/tour/authorizations/index.html b/output/tour/authorizations/index.html index 8cb4301..8661439 100644 --- a/output/tour/authorizations/index.html +++ b/output/tour/authorizations/index.html @@ -148,7 +148,7 @@ <p class="text-muted">Tour page 6 of 12</p> </div> <div id="tour-content"> - <p><a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/security/Authorizations.html">Authorizations</a> are a set of Strings that enable a user to read protected data. Users are granted authorizations + <p><a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/security/Authorizations.html">Authorizations</a> are a set of <code class="language-plaintext highlighter-rouge">String</code>s that enable a user to read protected data. Users are granted authorizations and choose which ones to use when scanning a table. The chosen authorizations are evaluated against the <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/security/ColumnVisibility.html">ColumnVisibility</a> of each Accumulo key in the scan. If the boolean expression of the ColumnVisibility evaluates to true, the data will be visible to the user.</p> @@ -166,38 +166,40 @@ visible to the user.</p> <ol> <li>Using the code from the previous exercise, add the following to the beginning of the <em>exercise</em> method. - <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="c1">// Create a "secretId" authorization & visibility</span> - <span class="kd">final</span> <span class="nc">String</span> <span class="n">secretId</span> <span class="o">=</span> <span class="s">"secretId"</span><span class="o">;</span> - <span class="nc">Authorizations</span> <span class="n">auths</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Authorizations</span><span class="o">(</span><span class="n">secretId</span><span class="o">);</span> - <span class="nc">ColumnVisibility</span> <span class="n">colVis</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ColumnVisibility</span><span class="o">(</span><span class="n">secretId</span><span class="o">);</span> - - <span class="c1">// Create a user with the "secretId" authorization and grant him read permissions on our table</span> - <span class="n">client</span><span class="o">.</span><span class="na">securityOperations</span><span class="o">().</span><span class="na">createLocalUser</span><span class="o">(</span><span class="s">"commissioner"</span><span class="o">,</span> <span class="k">new</span> <span class="nc">PasswordToken</span><span class="o">(</span><span class="s">"gordonrocks"</span><span class="o">));</span> - <span class="n">client</span><span class="o">.</span><span class="na">securityOperations</span><span class="o">().</span><span class="na">changeUserAuthorizations</span><span class="o">(</span><span class="s">"commissioner"</span><span class="o">,</span> <span class="n">auths</span><span class="o">);</span> - <span class="n">client</span><span class="o">.</span><span class="na">securityOperations</span><span class="o">().</span><span class="na">grantTablePermission</span><span class="o">(</span><span class="s">"commissioner"</span><span class="o">,</span> <span class="s">"GothamPD"</span><span class="o">,</span> <span class="nc">TablePermission</span><span class="o">.</span><span class="na">READ</span><span class="o">);</span> -</code></pre></div> </div> - </li> - <li> - <p>The <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/data/Mutation.html">Mutation</a> API allows you to set the <code class="language-plaintext highlighter-rouge">secretId</code> visibility on a column. Find the proper method for setting a column visibility in -the Mutation API and modify the code so the <code class="language-plaintext highlighter-rouge">colVis</code> variable created above secures the “name” columns.</p> - </li> - <li>Build and run. What data do you see? - <ul> - <li>You should see all of the data except the secret identities of Batman and Robin. This is because the Scanner was created - from the root user which doesn’t have the <code class="language-plaintext highlighter-rouge">secretId</code> authorization.</li> - <li>Replace the <code class="language-plaintext highlighter-rouge">Authorizations.EMPTY</code> in the Scanner with the <code class="language-plaintext highlighter-rouge">auths</code> variable created above and run it again.</li> - <li>This should result in an error since the root user doesn’t have the authorizations we tried to pass to the Scanner.</li> - </ul> - </li> - <li>Use the following to create a client for the “commissioner” using the <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/client/Accumulo.html">Accumulo</a> entry point. - <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">try</span> <span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">commishClient</span> <span class="o">=</span> <span class="nc">Accumulo</span><span class="o">.</span><span class="na">newClient</span><span class="o">().</span><span class="na">from</span><span class="o">(</span><span class="n">client</span><span class="o">.</span><span class="na">pr [...] - <span class="o">.</span><span class="na">as</span><span class="o">(</span><span class="s">"commissioner"</span><span class="o">,</span> <span class="s">"gordonrocks"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span> -</code></pre></div> </div> - </li> +```java + // Create a “secretId” authorization & visibility + final String secretId = “secretId”; + Authorizations auths = new Authorizations(secretId); + ColumnVisibility colVis = new ColumnVisibility(secretId);</li> +</ol> + +<p>// Create a user with the “secretId” authorization and grant him read permissions on our table + client.securityOperations().createLocalUser(“commissioner”, new PasswordToken(“gordonrocks”)); + client.securityOperations().changeUserAuthorizations(“commissioner”, auths); + client.securityOperations().grantTablePermission(“commissioner”, “GothamPD”, TablePermission.READ);</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> +2. The [Mutation] API allows you to set the `secretId` visibility on a column. Find the proper method for setting a column visibility in +the Mutation API and modify the code so the `colVis` variable created above secures the "name" columns. + +3. Build and run. What data do you see? +* You should see all of the data except the secret identities of Batman and Robin. This is because the `Scanner` was created from the root user which doesn't have the `secretId` authorization. +* Replace the `Authorizations.EMPTY` in the Scanner with the `auths` variable created above and run it again. +* This should result in an error since the root user doesn't have the authorizations we tried to pass to the Scanner. + +4. Use the following to create a client for the "commissioner" using the [Accumulo] entry point. +```java + try (AccumuloClient commishClient = Accumulo.newClient().from(client.properties()).as("commissioner", "gordonrocks").build()) { + // Insert your code here + + }; +</code></pre></div></div> + +<ol> <li> <p>Using the commissioner client, create a Scanner with the authorizations needed to view the secret identities.</p> </li> - <li>Build and run. You should see all the rows in the GothamPD table printed, including these secured key/value pairs: + <li> + <p>Build and run. You should see all the rows in the GothamPD table printed, including these secured key/value pairs:</p> <pre><code class="language-commandline">Key : id0001 hero:name [secretId] 1511900180231 false Value : Bruce Wayne Key : id0002 hero:name [secretId] 1511900180231 false Value : Dick Grayson </code></pre> diff --git a/output/tour/basic-read-write/index.html b/output/tour/basic-read-write/index.html index ef59235..23706fc 100644 --- a/output/tour/basic-read-write/index.html +++ b/output/tour/basic-read-write/index.html @@ -152,8 +152,8 @@ data in tables and rows. Each row in an Accumulo table can hold many key/value pairs. Our next exercise shows how to write and read from a table.</p> -<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> - <span class="c1">// create a table called "GothamPD".</span> +<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> + <span class="c1">// Create a table called "GothamPD".</span> <span class="n">client</span><span class="o">.</span><span class="na">tableOperations</span><span class="o">().</span><span class="na">create</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">);</span> <span class="c1">// Create a Mutation object to hold all changes to a row in a table. Each row has a unique row ID.</span> @@ -166,20 +166,20 @@ write and read from a table.</p> <span class="c1">// Create a BatchWriter to the GothamPD table and add your mutation to it. Try w/ resources will close for us.</span> <span class="k">try</span> <span class="o">(</span><span class="nc">BatchWriter</span> <span class="n">writer</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createBatchWriter</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">))</span> <span class="o">{</span> - <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation</span><span class="o">);</span> + <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation</span><span class="o">);</span> <span class="o">}</span> - <span class="c1">// Read and print all rows of the "GothamPD" table. Try w/ resources will close for us.</span> <span class="k">try</span> <span class="o">(</span><span class="nc">Scanner</span> <span class="n">scan</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createScanner</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">,</span> <span class="nc">Authorizations</span><span class="o">.</span><span class="na">EMPTY</span><span class="o">))</span> <span class="o">{</span> - <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Gotham Police Department Persons of Interest:"</span><span class="o">);</span> - <span class="c1">// A Scanner is an extension of java.lang.Iterable so behaves just like one.</span> - <span class="k">for</span> <span class="o">(</span><span class="nc">Map</span><span class="o">.</span><span class="na">Entry</span><span class="o"><</span><span class="nc">Key</span><span class="o">,</span> <span class="nc">Value</span><span class="o">></span> <span class="n">entry</span> <span class="o">:</span> <span class="n">scan</span><span class="o">)</span> <span class="o">{</span> - <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Key : %-50s Value : %s\n"</span><span class="o">,</span> <span class="n">entry</span><span class="o">.</span><span class="na">getKey</span><span class="o">(),</span> <span class="n">entry</span><span class="o">.</span><span class="na">getValue</span><span class="o">());</span> - <span class="o">}</span> + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Gotham Police Department Persons of Interest:"</span><span class="o">);</span> + + <span class="c1">// Note: A Scanner is an extension of java.lang.Iterable so it will traverse through the scanner's range.</span> + <span class="c1">// In this case, since no range was set on the Scanner, it will traverse the entire table.</span> + <span class="k">for</span> <span class="o">(</span><span class="nc">Map</span><span class="o">.</span><span class="na">Entry</span><span class="o"><</span><span class="nc">Key</span><span class="o">,</span> <span class="nc">Value</span><span class="o">></span> <span class="n">entry</span> <span class="o">:</span> <span class="n">scan</span><span class="o">)</span> <span class="o">{</span> + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Key : %-50s Value : %s\n"</span><span class="o">,</span> <span class="n">entry</span><span class="o">.</span><span class="na">getKey</span><span class="o">(),</span> <span class="n">entry</span><span class="o">.</span><span class="na">getValue</span><span class="o">());</span> + <span class="o">}</span> <span class="o">}</span> -<span class="o">}</span> + <span class="o">}</span> </code></pre></div></div> - <p>Copy this code into your <code class="language-plaintext highlighter-rouge">exercise</code> method then compile and run.</p> <p>Good job! That is all it takes to write and read from Accumulo.</p> @@ -189,7 +189,7 @@ write and read from a table.</p> <h3 id="but-wait-i-thought-accumulo-was-all-about-security">But wait… I thought Accumulo was all about Security?</h3> -<p>Spoiler Alert: it is! Did you notice the <code class="language-plaintext highlighter-rouge">Authorizations.EMPTY</code> we passed in when creating a <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/client/Scanner.html">Scanner</a>? The data +<p>Spoiler Alert: It is! Did you notice the <code class="language-plaintext highlighter-rouge">Authorizations.EMPTY</code> we passed in when creating a <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/client/Scanner.html">Scanner</a>? The data we created in this first lesson was not secured with Authorizations so the Scanner didn’t require any Authorizations to read it. More to come later in the <a href="/tour/authorizations">Authorizations</a> lesson!</p> diff --git a/output/tour/batch-scanner-code/index.html b/output/tour/batch-scanner-code/index.html index 377af05..4d2357d 100644 --- a/output/tour/batch-scanner-code/index.html +++ b/output/tour/batch-scanner-code/index.html @@ -150,47 +150,46 @@ <div id="tour-content"> <p>Below is a solution to the exercise.</p> -<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> - <span class="c1">// create a table called "GothamPD".</span> +<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> + <span class="c1">// Create a table called "GothamPD".</span> <span class="n">client</span><span class="o">.</span><span class="na">tableOperations</span><span class="o">().</span><span class="na">create</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">);</span> <span class="c1">// Generate 10,000 rows of henchman data</span> - <span class="k">try</span><span class="o">(</span><span class="nc">BatchWriter</span> <span class="n">writer</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createBatchWriter</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">))</span> <span class="o">{</span> - <span class="k">for</span><span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10_000</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span> - <span class="nc">Mutation</span> <span class="n">m</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Mutation</span><span class="o">(</span><span class="nc">String</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="s">"id%04d"</span><span class="o">,</span> <span class="n">i</span><span class="o">));</span> - <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"alias"</span><span class="o">,</span> <span class="s">"henchman"</span> <span class="o">+</span> <span class="n">i</span><span class="o">);</span> - <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"yearsOfService"</span><span class="o">,</span> <span class="s">""</span> <span class="o">+</span> <span class="o">(</span><span class="k">new</span> <span class="nc">Random</span><span class="o">().</span><span class="na">nextInt</span><span class="o">(</span><span class="mi">50</span><span class="o">)));</span> - <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"wearsCape?"</span><span class="o">,</span> <span class="s">"false"</span><span class="o">);</span> - <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">m</span><span class="o">);</span> - <span class="o">}</span> + <span class="k">try</span> <span class="o">(</span><span class="nc">BatchWriter</span> <span class="n">writer</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createBatchWriter</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">))</span> <span class="o">{</span> + <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10_000</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span> + <span class="nc">Mutation</span> <span class="n">m</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Mutation</span><span class="o">(</span><span class="nc">String</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="s">"id%04d"</span><span class="o">,</span> <span class="n">i</span><span class="o">));</span> + <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"alias"</span><span class="o">,</span> <span class="s">"henchman"</span> <span class="o">+</span> <span class="n">i</span><span class="o">);</span> + <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"yearsOfService"</span><span class="o">,</span> <span class="s">""</span> <span class="o">+</span> <span class="o">(</span><span class="k">new</span> <span class="nc">Random</span><span class="o">().</span><span class="na">nextInt</span><span class="o">(</span><span class="mi">50</span><span class="o">)));</span> + <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"wearsCape?"</span><span class="o">,</span> <span class="s">"false"</span><span class="o">);</span> + <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">m</span><span class="o">);</span> + <span class="o">}</span> <span class="o">}</span> - <span class="c1">// 1. Create a BatchScanner with 5 query threads</span> - <span class="k">try</span><span class="o">(</span><span class="nc">BatchScanner</span> <span class="n">batchScanner</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createBatchScanner</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">,</span> <span class="nc">Authorizations</span><span class="o">.</span><span class="na">EMPTY</span><span class="o">,</span> <span class="mi">5</span><span class="o">))</sp [...] - <span class="c1">// 2. Create a collection of 2 sample ranges and set it to the batchScanner</span> - <span class="nc">List</span> <span class="n">ranges</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ArrayList</span><span class="o"><</span><span class="nc">Range</span><span class="o">>();</span> - <span class="n">ranges</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="nc">Range</span><span class="o">(</span><span class="s">"id1000"</span><span class="o">,</span> <span class="s">"id1999"</span><span class="o">));</span> - <span class="n">ranges</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="nc">Range</span><span class="o">(</span><span class="s">"id9000"</span><span class="o">,</span> <span class="s">"id9999"</span><span class="o">));</span> - <span class="n">batchScanner</span><span class="o">.</span><span class="na">setRanges</span><span class="o">(</span><span class="n">ranges</span><span class="o">);</span> - - <span class="c1">// 3. Fetch just the columns we want</span> - <span class="n">batchScanner</span><span class="o">.</span><span class="na">fetchColumn</span><span class="o">(</span><span class="k">new</span> <span class="nc">Text</span><span class="o">(</span><span class="s">"villain"</span><span class="o">),</span> <span class="k">new</span> <span class="nc">Text</span><span class="o">(</span><span class="s">"yearsOfService"</span><span class="o">));</span> - - <span class="c1">// 4. Calculate average years of service</span> - <span class="nc">Long</span> <span class="n">totalYears</span> <span class="o">=</span> <span class="mi">0L</span><span class="o">;</span> - <span class="nc">Long</span> <span class="n">entriesRead</span> <span class="o">=</span> <span class="mi">0L</span><span class="o">;</span> - <span class="k">for</span> <span class="o">(</span><span class="nc">Map</span><span class="o">.</span><span class="na">Entry</span><span class="o"><</span><span class="nc">Key</span><span class="o">,</span> <span class="nc">Value</span><span class="o">></span> <span class="n">entry</span> <span class="o">:</span> <span class="n">batchScanner</span><span class="o">)</span> <span class="o">{</span> - <span class="n">totalYears</span> <span class="o">+=</span> <span class="nc">Long</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="n">entry</span><span class="o">.</span><span class="na">getValue</span><span class="o">().</span><span class="na">toString</span><span class="o">());</span> - <span class="n">entriesRead</span><span class="o">++;</span> - <span class="o">}</span> - <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"The average years of service of "</span> <span class="o">+</span> <span class="n">entriesRead</span> <span class="o">+</span> <span class="s">" villians is "</span> <span class="o">+</span> <span class="n">totalYears</span> <span class="o">/</span> <span class="n">entriesRead</span><span class="o">);</span> + <span class="k">try</span> <span class="o">(</span><span class="nc">BatchScanner</span> <span class="n">batchScanner</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createBatchScanner</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">,</span> <span class="nc">Authorizations</span><span class="o">.</span><span class="na">EMPTY</span><span class="o">,</span> <span class="mi">5</span><span class="o">))</s [...] + + <span class="c1">// 2. Create a collection of 2 sample ranges and set it to the batchScanner</span> + <span class="nc">List</span><span class="o"><</span><span class="nc">Range</span><span class="o">></span><span class="n">ranges</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ArrayList</span><span class="o"><</span><span class="nc">Range</span><span class="o">>();</span> + <span class="n">ranges</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="nc">Range</span><span class="o">(</span><span class="s">"id1000"</span><span class="o">,</span> <span class="s">"id1999"</span><span class="o">));</span> + <span class="n">ranges</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="nc">Range</span><span class="o">(</span><span class="s">"id9000"</span><span class="o">,</span> <span class="s">"id9999"</span><span class="o">));</span> + <span class="n">batchScanner</span><span class="o">.</span><span class="na">setRanges</span><span class="o">(</span><span class="n">ranges</span><span class="o">);</span> + + <span class="c1">// 3. Fetch just the columns we want</span> + <span class="n">batchScanner</span><span class="o">.</span><span class="na">fetchColumn</span><span class="o">(</span><span class="k">new</span> <span class="nc">Text</span><span class="o">(</span><span class="s">"villain"</span><span class="o">),</span> <span class="k">new</span> <span class="nc">Text</span><span class="o">(</span><span class="s">"yearsOfService"</span><span class="o">));</span> + + <span class="c1">// 4. Calculate average years of service</span> + <span class="nc">Long</span> <span class="n">totalYears</span> <span class="o">=</span> <span class="mi">0L</span><span class="o">;</span> + <span class="nc">Long</span> <span class="n">entriesRead</span> <span class="o">=</span> <span class="mi">0L</span><span class="o">;</span> + <span class="k">for</span> <span class="o">(</span><span class="nc">Map</span><span class="o">.</span><span class="na">Entry</span><span class="o"><</span><span class="nc">Key</span><span class="o">,</span> <span class="nc">Value</span><span class="o">></span> <span class="n">entry</span> <span class="o">:</span> <span class="n">batchScanner</span><span class="o">)</span> <span class="o">{</span> + <span class="n">totalYears</span> <span class="o">+=</span> <span class="nc">Long</span><span class="o">.</span><span class="na">valueOf</span><span class="o">(</span><span class="n">entry</span><span class="o">.</span><span class="na">getValue</span><span class="o">().</span><span class="na">toString</span><span class="o">());</span> + <span class="n">entriesRead</span><span class="o">++;</span> + <span class="o">}</span> + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"The average years of service of "</span> <span class="o">+</span> <span class="n">entriesRead</span> <span class="o">+</span> <span class="s">" villains is "</span> <span class="o">+</span> <span class="n">totalYears</span> <span class="o">/</span> <span class="n">entriesRead</span><span class="o">);</span> <span class="o">}</span> -<span class="o">}</span> + <span class="o">}</span> </code></pre></div></div> - <p>Running the solution above should print output similar to below:</p> -<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>The average years of service of 2000 villians is 24 +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>The average years of service of 2000 villains is 24 </code></pre></div></div> </div> diff --git a/output/tour/batch-scanner/index.html b/output/tour/batch-scanner/index.html index 9543a8c..e81aafe 100644 --- a/output/tour/batch-scanner/index.html +++ b/output/tour/batch-scanner/index.html @@ -148,25 +148,26 @@ <p class="text-muted">Tour page 9 of 12</p> </div> <div id="tour-content"> - <p>Running on a single thread, a Scanner will retrieve a single Range of data and return Keys in sorted order. A <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/client/BatchScanner.html">BatchScanner</a> -will retrieve multiple Ranges of data using multiple threads. A BatchScanner can be more efficient but does not guarantee Keys will be returned in sorted order.</p> + <p>Running on a single thread, a <code class="language-plaintext highlighter-rouge">Scanner</code> will retrieve a single <code class="language-plaintext highlighter-rouge">Range</code> of data and return <code class="language-plaintext highlighter-rouge">Key</code>s in sorted order. A <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/client/BatchScanner.html">BatchScanner</a> +will retrieve multiple <code class="language-plaintext highlighter-rouge">Range</code>s of data using multiple threads. A <code class="language-plaintext highlighter-rouge">BatchScanner</code> can be more efficient but does not guarantee <code class="language-plaintext highlighter-rouge">Key</code>s will be returned in sorted order.</p> -<p>For this exercise, we need to generate a bunch of data to test BatchScanner. Copy the code below into your <code class="language-plaintext highlighter-rouge">exercise</code> method.</p> -<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> - <span class="c1">// create a table called "GothamPD".</span> +<p>For this exercise, we need to generate a bunch of data to test BatchScanner. Copy the code below into your <em>exercise</em> method.</p> + +<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> + <span class="c1">// Create a table called "GothamPD".</span> <span class="n">client</span><span class="o">.</span><span class="na">tableOperations</span><span class="o">().</span><span class="na">create</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">);</span> <span class="c1">// Generate 10,000 rows of henchman data, each with a different number yearsOfService</span> <span class="k">try</span> <span class="o">(</span><span class="nc">BatchWriter</span> <span class="n">writer</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createBatchWriter</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">))</span> <span class="o">{</span> - <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10_000</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span> - <span class="nc">Mutation</span> <span class="n">m</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Mutation</span><span class="o">(</span><span class="nc">String</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="s">"id%04d"</span><span class="o">,</span> <span class="n">i</span><span class="o">));</span> - <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"alias"</span><span class="o">,</span> <span class="s">"henchman"</span> <span class="o">+</span> <span class="n">i</span><span class="o">);</span> - <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"yearsOfService"</span><span class="o">,</span> <span class="s">""</span> <span class="o">+</span> <span class="o">(</span><span class="k">new</span> <span class="nc">Random</span><span class="o">().</span><span class="na">nextInt</span><span class="o">(</span><span class="mi">50</span><span class="o">)));</span> - <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"wearsCape?"</span><span class="o">,</span> <span class="s">"false"</span><span class="o">);</span> - <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">m</span><span class="o">);</span> - <span class="o">}</span> + <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10_000</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span> + <span class="nc">Mutation</span> <span class="n">m</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Mutation</span><span class="o">(</span><span class="nc">String</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="s">"id%04d"</span><span class="o">,</span> <span class="n">i</span><span class="o">));</span> + <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"alias"</span><span class="o">,</span> <span class="s">"henchman"</span> <span class="o">+</span> <span class="n">i</span><span class="o">);</span> + <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"yearsOfService"</span><span class="o">,</span> <span class="s">""</span> <span class="o">+</span> <span class="o">(</span><span class="k">new</span> <span class="nc">Random</span><span class="o">().</span><span class="na">nextInt</span><span class="o">(</span><span class="mi">50</span><span class="o">)));</span> + <span class="n">m</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="s">"villain"</span><span class="o">,</span> <span class="s">"wearsCape?"</span><span class="o">,</span> <span class="s">"false"</span><span class="o">);</span> + <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">m</span><span class="o">);</span> + <span class="o">}</span> <span class="o">}</span> -<span class="o">}</span> + <span class="o">}</span> </code></pre></div></div> <p>We want to calculate the average years of service from a sample of 2000 villains. A BatchScanner would be good for this task because we @@ -174,10 +175,10 @@ don’t need the returned keys to be sorted. Follow these steps to efficiently s <ol> <li> - <p>After the above code, create a BatchScanner with 5 query threads. Similar to a Scanner, use the <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/client/Connector.html#createBatchScanner-java.lang.String-org.apache.accumulo.core.security.Authorizations-int-">createBatchScanner</a> method.</p> + <p>After the above code, create a BatchScanner with five query threads. Similar to a Scanner, use the <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/client/Connector.html#createBatchScanner-java.lang.String-org.apache.accumulo.core.security.Authorizations-int-">createBatchScanner</a> method.</p> </li> <li> - <p>Create an ArrayList of 2 sample Ranges (<code class="language-plaintext highlighter-rouge">id1000</code> to <code class="language-plaintext highlighter-rouge">id1999</code> and <code class="language-plaintext highlighter-rouge">id9000</code> to <code class="language-plaintext highlighter-rouge">id9999</code>) and set the ranges of the <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/client/BatchScanner.html">BatchScanner</a> using [...] + <p>Create an ArrayList of two sample <code class="language-plaintext highlighter-rouge">Range</code>s (<code class="language-plaintext highlighter-rouge">id1000</code> to <code class="language-plaintext highlighter-rouge">id1999</code> and <code class="language-plaintext highlighter-rouge">id9000</code> to <code class="language-plaintext highlighter-rouge">id9999</code>) and set the ranges of the <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/ac [...] </li> <li> <p>We can make the scan more efficient by only bringing back the columns we want. Use <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/client/ScannerBase.html#fetchColumn-org.apache.hadoop.io.Text-org.apache.hadoop.io.Text-">fetchColumn</a> to get the <code class="language-plaintext highlighter-rouge">villain</code> family diff --git a/output/tour/client/index.html b/output/tour/client/index.html index 9dc6a90..4ade403 100644 --- a/output/tour/client/index.html +++ b/output/tour/client/index.html @@ -160,10 +160,10 @@ The properties used to create the client can be seen in <code class="language-pl Notice the client can be wrapped in a Java try-with-resources since it is AutoCloseable.</p> <p>Start by using table operations to list the default tables and instance operations to get the instance ID.</p> -<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> +<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> <span class="k">for</span> <span class="o">(</span><span class="nc">String</span> <span class="n">t</span> <span class="o">:</span> <span class="n">client</span><span class="o">.</span><span class="na">tableOperations</span><span class="o">().</span><span class="na">list</span><span class="o">())</span> - <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Table: "</span> <span class="o">+</span> <span class="n">t</span><span class="o">);</span> - + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Table: "</span> <span class="o">+</span> <span class="n">t</span><span class="o">);</span> + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Instance ID: "</span> <span class="o">+</span> <span class="n">client</span><span class="o">.</span><span class="na">instanceOperations</span><span class="o">().</span><span class="na">getInstanceID</span><span class="o">());</span> <span class="o">}</span> </code></pre></div></div> diff --git a/output/tour/conditional-writer-code/index.html b/output/tour/conditional-writer-code/index.html index 3451c13..2c44506 100644 --- a/output/tour/conditional-writer-code/index.html +++ b/output/tour/conditional-writer-code/index.html @@ -153,7 +153,7 @@ <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">static</span> <span class="kt">boolean</span> <span class="nf">setAddress</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">,</span> <span class="nc">String</span> <span class="n">id</span><span class="o">,</span> <span class="nc">String</span> <span class="n">expectedAddr</span><span class="o">,</span> <span c [...] <span class="k">try</span> <span class="o">(</span><span class="nc">ConditionalWriter</span> <span class="n">writer</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createConditionalWriter</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">,</span> <span class="k">new</span> <span class="nc">ConditionalWriterConfig</span><span class="o">()))</span> <span class="o">{</span> <span class="nc">Condition</span> <span class="n">condition</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Condition</span><span class="o">(</span><span class="s">"location"</span><span class="o">,</span> <span class="s">"home"</span><span class="o">);</span> - <span class="k">if</span><span class="o">(</span><span class="n">expectedAddr</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span> + <span class="k">if</span> <span class="o">(</span><span class="n">expectedAddr</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span> <span class="n">condition</span><span class="o">.</span><span class="na">setValue</span><span class="o">(</span><span class="n">expectedAddr</span><span class="o">);</span> <span class="o">}</span> <span class="nc">ConditionalMutation</span> <span class="n">mutation</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ConditionalMutation</span><span class="o">(</span><span class="n">id</span><span class="o">,</span> <span class="n">condition</span><span class="o">);</span> @@ -163,7 +163,6 @@ <span class="k">throw</span> <span class="k">new</span> <span class="nf">RuntimeException</span><span class="o">(</span><span class="n">e</span><span class="o">);</span> <span class="o">}</span> <span class="o">}</span> - </code></pre></div></div> <p>The following output shows running the example with a conditional writer. diff --git a/output/tour/conditional-writer/index.html b/output/tour/conditional-writer/index.html index 3425648..cbe54eb 100644 --- a/output/tour/conditional-writer/index.html +++ b/output/tour/conditional-writer/index.html @@ -186,7 +186,7 @@ is the batch writer always makes the update, even when the value has changed since it was read.</p> <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">static</span> <span class="nc">String</span> <span class="nf">getAddress</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">,</span> <span class="nc">String</span> <span class="n">id</span><span class="o">)</span> <span class="o">{</span> - <span class="c1">// The IsolatedScanner ensures partial changes to a row are not seen</span> + <span class="c1">// The IsolatedScanner ensures partial changes to a row are not seen</span> <span class="k">try</span> <span class="o">(</span><span class="nc">Scanner</span> <span class="n">scanner</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">IsolatedScanner</span><span class="o">(</span><span class="n">client</span><span class="o">.</span><span class="na">createScanner</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">,</span> <span class="nc">Authorizations</span><span class="o">.</span><span class="na">EMPTY</s [...] <span class="n">scanner</span><span class="o">.</span><span class="na">setRange</span><span class="o">(</span><span class="nc">Range</span><span class="o">.</span><span class="na">exact</span><span class="o">(</span><span class="n">id</span><span class="o">,</span> <span class="s">"location"</span><span class="o">,</span> <span class="s">"home"</span><span class="o">));</span> <span class="k">for</span> <span class="o">(</span><span class="nc">Entry</span><span class="o"><</span><span class="nc">Key</span><span class="o">,</span><span class="nc">Value</span><span class="o">></span> <span class="n">entry</span> <span class="o">:</span> <span class="n">scanner</span><span class="o">)</span> <span class="o">{</span> @@ -213,36 +213,34 @@ changed since it was read.</p> <span class="k">return</span> <span class="nc">CompletableFuture</span><span class="o">.</span><span class="na">runAsync</span><span class="o">(()</span> <span class="o">-></span> <span class="o">{</span> <span class="nc">String</span> <span class="n">currAddr</span><span class="o">,</span> <span class="n">newAddr</span><span class="o">;</span> <span class="k">do</span> <span class="o">{</span> - <span class="n">currAddr</span> <span class="o">=</span> <span class="n">getAddress</span><span class="o">(</span><span class="n">client</span><span class="o">,</span> <span class="n">id</span><span class="o">);</span> - <span class="n">newAddr</span> <span class="o">=</span> <span class="n">modifier</span><span class="o">.</span><span class="na">apply</span><span class="o">(</span><span class="n">currAddr</span><span class="o">);</span> - <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Thread %3d attempting change %20s -> %-20s\n"</span><span class="o">,</span> - <span class="nc">Thread</span><span class="o">.</span><span class="na">currentThread</span><span class="o">().</span><span class="na">getId</span><span class="o">(),</span> <span class="s">"'"</span><span class="o">+</span><span class="n">currAddr</span><span class="o">+</span><span class="s">"'"</span><span class="o">,</span> <span class="s">"'"</span><span class="o">+</span><span class="n">newAddr</span><span class="o">+</span><span class="s">"'"</span><span class="o">);</span> + <span class="n">currAddr</span> <span class="o">=</span> <span class="n">getAddress</span><span class="o">(</span><span class="n">client</span><span class="o">,</span> <span class="n">id</span><span class="o">);</span> + <span class="n">newAddr</span> <span class="o">=</span> <span class="n">modifier</span><span class="o">.</span><span class="na">apply</span><span class="o">(</span><span class="n">currAddr</span><span class="o">);</span> + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Thread %3d attempting change %20s -> %-20s\n"</span><span class="o">,</span> + <span class="nc">Thread</span><span class="o">.</span><span class="na">currentThread</span><span class="o">().</span><span class="na">getId</span><span class="o">(),</span> <span class="s">"'"</span><span class="o">+</span><span class="n">currAddr</span><span class="o">+</span><span class="s">"'"</span><span class="o">,</span> <span class="s">"'"</span><span class="o">+</span><span class="n">newAddr</span><span class="o">+</span><span class="s">"'"</span><span class="o">);</span> <span class="o">}</span> <span class="k">while</span> <span class="o">(!</span><span class="n">setAddress</span><span class="o">(</span><span class="n">client</span><span class="o">,</span> <span class="n">id</span><span class="o">,</span> <span class="n">currAddr</span><span class="o">,</span> <span class="n">newAddr</span><span class="o">));</span> - <span class="o">});</span> + <span class="o">}</span> <span class="o">}</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> <span class="n">client</span><span class="o">.</span><span class="na">tableOperations</span><span class="o">().</span><span class="na">create</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">);</span> - <span class="nc">String</span> <span class="n">id</span> <span class="o">=</span> <span class="s">"id0001"</span><span class="o">;</span> - <span class="n">setAddress</span><span class="o">(</span><span class="n">client</span><span class="o">,</span> <span class="n">id</span><span class="o">,</span> <span class="kc">null</span><span class="o">,</span> <span class="s">" 1007 Mountain Drive, Gotham, New York "</span><span class="o">);</span> - <span class="c1">// create async operation to trim whitespace</span> + <span class="c1">// Create async operation to trim whitespace</span> <span class="nc">Future</span><span class="o"><</span><span class="nc">Void</span><span class="o">></span> <span class="n">future1</span> <span class="o">=</span> <span class="n">modifyAddress</span><span class="o">(</span><span class="n">client</span><span class="o">,</span> <span class="n">id</span><span class="o">,</span> <span class="nl">String:</span><span class="o">:</span><span class="n">trim</span><span class="o">);</span> - <span class="c1">// create async operation to replace Dr with Drive</span> + <span class="c1">// Create async operation to replace Dr with Drive</span> <span class="nc">Future</span><span class="o"><</span><span class="nc">Void</span><span class="o">></span> <span class="n">future2</span> <span class="o">=</span> <span class="n">modifyAddress</span><span class="o">(</span><span class="n">client</span><span class="o">,</span> <span class="n">id</span><span class="o">,</span> <span class="n">addr</span> <span class="o">-></span> <span class="n">addr</span><span class="o">.</span><span class="na">replace</span><span class="o"> [...] - <span class="c1">// create async operation to replace New York with NY</span> + <span class="c1">// Create async operation to replace New York with NY</span> <span class="nc">Future</span><span class="o"><</span><span class="nc">Void</span><span class="o">></span> <span class="n">future3</span> <span class="o">=</span> <span class="n">modifyAddress</span><span class="o">(</span><span class="n">client</span><span class="o">,</span> <span class="n">id</span><span class="o">,</span> <span class="n">addr</span> <span class="o">-></span> <span class="n">addr</span><span class="o">.</span><span class="na">replace</span><span class="o"> [...] - <span class="c1">// wait for async operations to complete</span> + <span class="c1">// Wait for async operations to complete</span> <span class="n">future1</span><span class="o">.</span><span class="na">get</span><span class="o">();</span> <span class="n">future2</span><span class="o">.</span><span class="na">get</span><span class="o">();</span> <span class="n">future3</span><span class="o">.</span><span class="na">get</span><span class="o">();</span> - <span class="c1">// print the address stored in Accumulo</span> + <span class="c1">// Print the address stored in Accumulo</span> <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Final address : '"</span><span class="o">+</span><span class="n">getAddress</span><span class="o">(</span><span class="n">client</span><span class="o">,</span> <span class="n">id</span><span class="o">)+</span><span class="s">"'"</span><span class="o">);</span> <span class="o">}</span> </code></pre></div></div> diff --git a/output/tour/data-model-code/index.html b/output/tour/data-model-code/index.html index 51b2048..2f1b431 100644 --- a/output/tour/data-model-code/index.html +++ b/output/tour/data-model-code/index.html @@ -150,8 +150,8 @@ <div id="tour-content"> <p>Below is the solution for the exercise.</p> -<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> - <span class="c1">// create a table called "GothamPD".</span> +<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span> + <span class="c1">// Create a table called "GothamPD".</span> <span class="n">client</span><span class="o">.</span><span class="na">tableOperations</span><span class="o">().</span><span class="na">create</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">);</span> <span class="c1">// Create a row for Batman</span> @@ -175,23 +175,24 @@ <span class="c1">// Create a BatchWriter to the GothamPD table and add your mutations to it.</span> <span class="c1">// Once the BatchWriter is closed by the try w/ resources, data will be available to scans.</span> <span class="k">try</span> <span class="o">(</span><span class="nc">BatchWriter</span> <span class="n">writer</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createBatchWriter</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">))</span> <span class="o">{</span> - <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation1</span><span class="o">);</span> - <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation2</span><span class="o">);</span> - <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation3</span><span class="o">);</span> + <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation1</span><span class="o">);</span> + <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation2</span><span class="o">);</span> + <span class="n">writer</span><span class="o">.</span><span class="na">addMutation</span><span class="o">(</span><span class="n">mutation3</span><span class="o">);</span> <span class="o">}</span> <span class="c1">// Read and print all rows of the "GothamPD" table. Try w/ resources will close for us.</span> <span class="k">try</span> <span class="o">(</span><span class="nc">Scanner</span> <span class="n">scan</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="na">createScanner</span><span class="o">(</span><span class="s">"GothamPD"</span><span class="o">,</span> <span class="nc">Authorizations</span><span class="o">.</span><span class="na">EMPTY</span><span class="o">))</span> <span class="o">{</span> - <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Gotham Police Department Persons of Interest:"</span><span class="o">);</span> - <span class="c1">// A Scanner is an extension of java.lang.Iterable so behaves just like one.</span> - <span class="k">for</span> <span class="o">(</span><span class="nc">Map</span><span class="o">.</span><span class="na">Entry</span><span class="o"><</span><span class="nc">Key</span><span class="o">,</span> <span class="nc">Value</span><span class="o">></span> <span class="n">entry</span> <span class="o">:</span> <span class="n">scan</span><span class="o">)</span> <span class="o">{</span> - <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Key : %-50s Value : %s\n"</span><span class="o">,</span> <span class="n">entry</span><span class="o">.</span><span class="na">getKey</span><span class="o">(),</span> <span class="n">entry</span><span class="o">.</span><span class="na">getValue</span><span class="o">());</span> - <span class="o">}</span> + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Gotham Police Department Persons of Interest:"</span><span class="o">);</span> + + <span class="c1">// Note: A Scanner is an extension of java.lang.Iterable so it will traverse through the table.</span> + <span class="k">for</span> <span class="o">(</span><span class="nc">Map</span><span class="o">.</span><span class="na">Entry</span><span class="o"><</span><span class="nc">Key</span><span class="o">,</span> <span class="nc">Value</span><span class="o">></span> <span class="n">entry</span> <span class="o">:</span> <span class="n">scan</span><span class="o">)</span> <span class="o">{</span> + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">printf</span><span class="o">(</span><span class="s">"Key : %-50s Value : %s\n"</span><span class="o">,</span> <span class="n">entry</span><span class="o">.</span><span class="na">getKey</span><span class="o">(),</span> <span class="n">entry</span><span class="o">.</span><span class="na">getValue</span><span class="o">());</span> + <span class="o">}</span> <span class="o">}</span> -<span class="o">}</span> + <span class="o">}</span> </code></pre></div></div> - <p>The code above will print (timestamp will differ):</p> + <pre><code class="language-commandline">Gotham Police Department Persons of Interest: Key : id0001 hero:alias [] 1511306370025 false Value : Batman Key : id0001 hero:name [] 1511306370025 false Value : Bruce Wayne diff --git a/output/tour/data-model/index.html b/output/tour/data-model/index.html index 5751a0b..be3ec2a 100644 --- a/output/tour/data-model/index.html +++ b/output/tour/data-model/index.html @@ -148,7 +148,7 @@ <p class="text-muted">Tour page 4 of 12</p> </div> <div id="tour-content"> - <p>Data is stored in Accumulo in a distributed sorted map. The Keys of the map are broken up logically into a few different parts, + <p>Data is stored in Accumulo in a distributed sorted map. The <code class="language-plaintext highlighter-rouge">Key</code>s of the map are broken up logically into a few different parts, as seen in the image below.</p> <p><img src="/images/docs/key_value.png" alt="key value pair" /></p> diff --git a/output/tour/getting-started/index.html b/output/tour/getting-started/index.html index a28c678..dcd9574 100644 --- a/output/tour/getting-started/index.html +++ b/output/tour/getting-started/index.html @@ -164,10 +164,10 @@ version of Accumulo that runs on your local filesystem. It should only be used great here on the tour. Files and logs used by <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-minicluster/2.0.1/org/apache/accumulo/minicluster/MiniAccumuloCluster.html">MiniAccumuloCluster</a> can be seen in the <code class="language-plaintext highlighter-rouge">target/mac######</code> directory.</p> </li> <li>Modify the <em>exercise</em> method to print a hello message. You will put your code in this method for each lesson. - <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="o">{</span> - <span class="c1">// start writing your code here</span> - <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Hello world"</span><span class="o">);</span> - <span class="o">}</span> + <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">exercise</span><span class="o">(</span><span class="nc">AccumuloClient</span> <span class="n">client</span><span class="o">)</span> <span class="o">{</span> + <span class="c1">// Write your code here</span> + <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Hello world"</span><span class="o">);</span> + <span class="o">}</span> </code></pre></div> </div> </li> <li>Use the following Maven command to build and run the tour. diff --git a/output/tour/ranges-splits/index.html b/output/tour/ranges-splits/index.html index 1f4dbe7..1c42197 100644 --- a/output/tour/ranges-splits/index.html +++ b/output/tour/ranges-splits/index.html @@ -148,20 +148,20 @@ <p class="text-muted">Tour page 8 of 12</p> </div> <div id="tour-content"> - <p>A <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/data/Range.html">Range</a> is a specified group of Keys. There are many different ways to create a Range. Here are a few examples:</p> + <p>A <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/data/Range.html">Range</a> is a specified group of <code class="language-plaintext highlighter-rouge">Key</code>s. There are many different ways to create a <code class="language-plaintext highlighter-rouge">Range</code>. Here are a few examples:</p> <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Range</span> <span class="n">r1</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Range</span><span class="o">(</span><span class="n">startKey</span><span class="o">,</span> <span class="n">endKey</span><span class="o">);</span> <span class="c1">// Creates a range from startKey inclusive to endKey inclusive.</span> <span class="nc">Range</span> <span class="n">r2</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Range</span><span class="o">(</span><span class="n">row</span><span class="o">);</span> <span class="c1">// Creates a range that covers an entire row.</span> <span class="nc">Range</span> <span class="n">r3</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Range</span><span class="o">(</span><span class="n">startRow</span><span class="o">,</span> <span class="n">endRow</span><span class="o">);</span> <span class="c1">// Creates a range from startRow inclusive to endRow inclusive.</span> </code></pre></div></div> -<p>A Scanner by default will scan all Keys in a table but this can be inefficient. It is a good practice to set a range on a Scanner.</p> +<p>A <code class="language-plaintext highlighter-rouge">Scanner</code> by default will scan all <code class="language-plaintext highlighter-rouge">Key</code>s in a table but this can be inefficient. It is a good practice to set a range on a Scanner.</p> <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">scanner</span><span class="o">.</span><span class="na">setRange</span><span class="o">(</span><span class="k">new</span> <span class="nc">Range</span><span class="o">(</span><span class="s">"id0000"</span><span class="o">,</span> <span class="s">"id0010"</span><span class="o">));</span> <span class="c1">// returns rows from id0000 to id0010</span> </code></pre></div></div> -<p>As your data grows larger, Accumulo will split tables into smaller pieces called Tablets. Tablets can then be distributed across multiple Tablet Servers.<br /> -By default, a table will get split into Tablets on row boundaries, guaranteeing an entire row to be on one Tablet Server. We have the ability to +<p>As your data grows larger, Accumulo will split tables into smaller pieces called <code class="language-plaintext highlighter-rouge">Tablet</code>s which can be distributed across multiple Tablet Servers.<br /> +By default, a table will get split into <code class="language-plaintext highlighter-rouge">Tablet</code>s on row boundaries, guaranteeing an entire row to be on one Tablet Server. We have the ability to tell Accumulo where to split tables by setting split points. This is done using <code class="language-plaintext highlighter-rouge">addSplits</code> in the <a href="https://static.javadoc.io/org.apache.accumulo/accumulo-core/2.0.1/org/apache/accumulo/core/client/admin/TableOperations.html">TableOperations</a> API. The image below demonstrates how Accumulo splits data.</p> @@ -178,8 +178,8 @@ demonstrates how Accumulo splits data.</p> <p>Knowing these terms are critical when working closely with Accumulo. Iterators are especially unique and powerful. More on them later.</p> -<p>When working with large amounts of data across many Tablet Servers, a simple Scanner might not do the trick. Next lesson we learn about the power of -the multi-threaded BatchScanner!</p> +<p>When working with large amounts of data across many ‘Tablet Server’s, a simple Scanner might not do the trick. Next lesson we learn about the power of +the multi-threaded <code class="language-plaintext highlighter-rouge">BatchScanner</code>!</p> </div>