You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by do...@apache.org on 2022/04/13 15:26:26 UTC
[accumulo-examples] branch main updated: Fix sample example - update compaction configuration (#99)
This is an automated email from the ASF dual-hosted git repository.
domgarguilo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo-examples.git
The following commit(s) were added to refs/heads/main by this push:
new ae74b2f Fix sample example - update compaction configuration (#99)
ae74b2f is described below
commit ae74b2f03e27f701eb9ea384fa1412ac93361cbe
Author: Dom G <do...@apache.org>
AuthorDate: Wed Apr 13 11:26:21 2022 -0400
Fix sample example - update compaction configuration (#99)
* Update compaction config
* Add resources to try block. Use commom method to create table
---
.../accumulo/examples/sample/SampleExample.java | 158 ++++++++++-----------
1 file changed, 77 insertions(+), 81 deletions(-)
diff --git a/src/main/java/org/apache/accumulo/examples/sample/SampleExample.java b/src/main/java/org/apache/accumulo/examples/sample/SampleExample.java
index 5845fa3..2e27811 100644
--- a/src/main/java/org/apache/accumulo/examples/sample/SampleExample.java
+++ b/src/main/java/org/apache/accumulo/examples/sample/SampleExample.java
@@ -17,21 +17,22 @@
package org.apache.accumulo.examples.sample;
-import java.util.Collections;
+import java.util.Map;
import java.util.Map.Entry;
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.BatchWriter;
import org.apache.accumulo.core.client.SampleNotPresentException;
import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.client.TableExistsException;
import org.apache.accumulo.core.client.admin.CompactionConfig;
+import org.apache.accumulo.core.client.admin.PluginConfig;
import org.apache.accumulo.core.client.sample.RowSampler;
import org.apache.accumulo.core.client.sample.SamplerConfiguration;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.security.Authorizations;
+import org.apache.accumulo.examples.Common;
import org.apache.accumulo.examples.cli.BatchWriterOpts;
import org.apache.accumulo.examples.cli.ClientOnDefaultTable;
import org.apache.accumulo.examples.client.RandomBatchWriter;
@@ -41,17 +42,18 @@ import com.google.common.collect.ImmutableMap;
/**
* A simple example of using Accumulo's sampling feature. This example does something similar to
- * what README.sample shows using the shell. Also see {@link CutoffIntersectingIterator} and
+ * what README.sample shows using the shell. Also, see {@link CutoffIntersectingIterator} and
* README.sample for an example of how to use sample data from within an iterator.
*/
public class SampleExample {
// a compaction strategy that only selects files for compaction that have no sample data or sample
// data created in a different way than the tables
- @SuppressWarnings("removal")
- static final org.apache.accumulo.core.client.admin.CompactionStrategyConfig NO_SAMPLE_STRATEGY = new org.apache.accumulo.core.client.admin.CompactionStrategyConfig(
- "org.apache.accumulo.tserver.compaction.strategies.ConfigurableCompactionStrategy")
- .setOptions(Collections.singletonMap("SF_NO_SAMPLE", ""));
+ static final PluginConfig selectorCfg = new PluginConfig(
+ "org.apache.accumulo.tserver.compaction.strategies.ConfigurableCompactionStrategy",
+ Map.of("SF_NO_SAMPLE", ""));
+ static final CompactionConfig NO_SAMPLE_STRATEGY = new CompactionConfig()
+ .setSelector(selectorCfg);
static class Opts extends ClientOnDefaultTable {
public Opts() {
@@ -59,92 +61,86 @@ public class SampleExample {
}
}
- @SuppressWarnings("removal")
public static void main(String[] args) throws Exception {
Opts opts = new Opts();
BatchWriterOpts bwOpts = new BatchWriterOpts();
opts.parseArgs(RandomBatchWriter.class.getName(), args, bwOpts);
try (AccumuloClient client = opts.createAccumuloClient()) {
- try {
- client.tableOperations().create(opts.getTableName());
- } catch (TableExistsException e) {
- System.out.println("Table exists, not doing anything. Delete table " + opts.getTableName()
- + " and re-run");
- return;
- }
+ Common.createTableWithNamespace(client, opts.getTableName());
// write some data
- BatchWriter bw = client.createBatchWriter(opts.getTableName(), bwOpts.getBatchWriterConfig());
- bw.addMutation(createMutation("9225", "abcde", "file://foo.txt"));
- bw.addMutation(createMutation("8934", "accumulo scales", "file://accumulo_notes.txt"));
- bw.addMutation(createMutation("2317", "milk, eggs, bread, parmigiano-reggiano",
- "file://groceries/9/txt"));
- bw.addMutation(createMutation("3900", "EC2 ate my homework", "file://final_project.txt"));
- bw.flush();
-
- SamplerConfiguration sc1 = new SamplerConfiguration(RowSampler.class.getName());
- sc1.setOptions(ImmutableMap.of("hasher", "murmur3_32", "modulus", "3"));
-
- client.tableOperations().setSamplerConfiguration(opts.getTableName(), sc1);
-
- Scanner scanner = client.createScanner(opts.getTableName(), Authorizations.EMPTY);
- System.out.println("Scanning all data :");
- print(scanner);
- System.out.println();
-
- System.out.println(
- "Scanning with sampler configuration. Data was written before sampler was set on table, scan should fail.");
- scanner.setSamplerConfiguration(sc1);
- try {
+ try (
+ BatchWriter bw = client.createBatchWriter(opts.getTableName(),
+ bwOpts.getBatchWriterConfig());
+ Scanner scanner = client.createScanner(opts.getTableName(), Authorizations.EMPTY)) {
+ bw.addMutation(createMutation("9225", "abcde", "file://foo.txt"));
+ bw.addMutation(createMutation("8934", "accumulo scales", "file://accumulo_notes.txt"));
+ bw.addMutation(createMutation("2317", "milk, eggs, bread, parmigiano-reggiano",
+ "file://groceries/9/txt"));
+ bw.addMutation(createMutation("3900", "EC2 ate my homework", "file://final_project.txt"));
+ bw.flush();
+
+ SamplerConfiguration sc1 = new SamplerConfiguration(RowSampler.class.getName());
+ sc1.setOptions(ImmutableMap.of("hasher", "murmur3_32", "modulus", "3"));
+
+ client.tableOperations().setSamplerConfiguration(opts.getTableName(), sc1);
+
+ System.out.println("Scanning all data :");
print(scanner);
- } catch (SampleNotPresentException e) {
- System.out.println(" Saw sample not present exception as expected.");
- }
- System.out.println();
-
- // compact table to recreate sample data
- client.tableOperations().compact(opts.getTableName(),
- new CompactionConfig().setCompactionStrategy(NO_SAMPLE_STRATEGY));
-
- System.out
- .println("Scanning after compaction (compaction should have created sample data) : ");
- print(scanner);
- System.out.println();
-
- // update a document in the sample data
- bw.addMutation(createMutation("2317", "milk, eggs, bread, parmigiano-reggiano, butter",
- "file://groceries/9/txt"));
- bw.close();
- System.out.println(
- "Scanning sample after updating content for docId 2317 (should see content change in sample data) : ");
- print(scanner);
- System.out.println();
-
- // change tables sampling configuration...
- SamplerConfiguration sc2 = new SamplerConfiguration(RowSampler.class.getName());
- sc2.setOptions(ImmutableMap.of("hasher", "murmur3_32", "modulus", "2"));
- client.tableOperations().setSamplerConfiguration(opts.getTableName(), sc2);
- // compact table to recreate sample data using new configuration
- client.tableOperations().compact(opts.getTableName(),
- new CompactionConfig().setCompactionStrategy(NO_SAMPLE_STRATEGY));
-
- System.out.println(
- "Scanning with old sampler configuration. Sample data was created using new configuration with a compaction. Scan should fail.");
- try {
- // try scanning with old sampler configuration
+ System.out.println();
+
+ System.out.println(
+ "Scanning with sampler configuration. Data was written before sampler was set on table, scan should fail.");
+ scanner.setSamplerConfiguration(sc1);
+ try {
+ print(scanner);
+ } catch (SampleNotPresentException e) {
+ System.out.println(" Saw sample not present exception as expected.");
+ }
+ System.out.println();
+
+ // compact table to recreate sample data
+ client.tableOperations().compact(opts.getTableName(), NO_SAMPLE_STRATEGY);
+
+ System.out
+ .println("Scanning after compaction (compaction should have created sample data) : ");
print(scanner);
- } catch (SampleNotPresentException e) {
- System.out.println(" Saw sample not present exception as expected ");
- }
- System.out.println();
+ System.out.println();
- // update expected sampler configuration on scanner
- scanner.setSamplerConfiguration(sc2);
+ // update a document in the sample data
+ bw.addMutation(createMutation("2317", "milk, eggs, bread, parmigiano-reggiano, butter",
+ "file://groceries/9/txt"));
- System.out.println("Scanning with new sampler configuration : ");
- print(scanner);
- System.out.println();
+ System.out.println(
+ "Scanning sample after updating content for docId 2317 (should see content change in sample data) : ");
+ print(scanner);
+ System.out.println();
+
+ // change tables sampling configuration...
+ SamplerConfiguration sc2 = new SamplerConfiguration(RowSampler.class.getName());
+ sc2.setOptions(ImmutableMap.of("hasher", "murmur3_32", "modulus", "2"));
+ client.tableOperations().setSamplerConfiguration(opts.getTableName(), sc2);
+ // compact table to recreate sample data using new configuration
+ client.tableOperations().compact(opts.getTableName(), NO_SAMPLE_STRATEGY);
+
+ System.out.println(
+ "Scanning with old sampler configuration. Sample data was created using new configuration with a compaction. Scan should fail.");
+ try {
+ // try scanning with old sampler configuration
+ print(scanner);
+ } catch (SampleNotPresentException e) {
+ System.out.println(" Saw sample not present exception as expected ");
+ }
+ System.out.println();
+
+ // update expected sampler configuration on scanner
+ scanner.setSamplerConfiguration(sc2);
+
+ System.out.println("Scanning with new sampler configuration : ");
+ print(scanner);
+ System.out.println();
+ }
}
}