You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by mm...@apache.org on 2018/07/27 15:26:15 UTC
[accumulo] branch master updated: Update Shell bulk import command.
Closes #470
This is an automated email from the ASF dual-hosted git repository.
mmiller pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/master by this push:
new 02eaab9 Update Shell bulk import command. Closes #470
02eaab9 is described below
commit 02eaab99469ddfcf9cd0ddd4f11bbf4b4e6d2c69
Author: Mike Miller <mm...@apache.org>
AuthorDate: Fri Jul 27 11:26:13 2018 -0400
Update Shell bulk import command. Closes #470
The shell importdirectory command will now support both the old and new
versions of bulk import, based on the number of arguments provided.
---
.../shell/commands/ImportDirectoryCommand.java | 43 ++++++++++++++++++----
1 file changed, 35 insertions(+), 8 deletions(-)
diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/ImportDirectoryCommand.java b/shell/src/main/java/org/apache/accumulo/shell/commands/ImportDirectoryCommand.java
index ec1576b..0429794 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/ImportDirectoryCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/ImportDirectoryCommand.java
@@ -21,6 +21,7 @@ import java.io.IOException;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.admin.TableOperations;
import org.apache.accumulo.shell.Shell;
import org.apache.accumulo.shell.Shell.Command;
import org.apache.commons.cli.CommandLine;
@@ -30,7 +31,9 @@ public class ImportDirectoryCommand extends Command {
@Override
public String description() {
return "bulk imports an entire directory of data files to the current"
- + " table. The boolean argument determines if accumulo sets the time.";
+ + " table. The boolean argument determines if accumulo sets the time. "
+ + "Passing 3 arguments will use the old bulk import. The new bulk import only takes 2 "
+ + "arguments: <directory> true|false";
}
@Override
@@ -38,23 +41,47 @@ public class ImportDirectoryCommand extends Command {
throws IOException, AccumuloException, AccumuloSecurityException, TableNotFoundException {
shellState.checkTableState();
- String dir = cl.getArgs()[0];
- String failureDir = cl.getArgs()[1];
- final boolean setTime = Boolean.parseBoolean(cl.getArgs()[2]);
+ String[] args = cl.getArgs();
+ String dir = args[0];
+ boolean setTime;
+
+ // new bulk import only takes 2 args
+ if (args.length == 2) {
+ setTime = Boolean.parseBoolean(cl.getArgs()[1]);
+ TableOperations.ImportExecutorOptions bulk = shellState.getConnector().tableOperations()
+ .addFilesTo(shellState.getTableName()).from(dir);
+ if (setTime)
+ bulk.settingLogicalTime().load();
+ else
+ bulk.load();
+ } else if (args.length == 3) {
+ // warn using deprecated bulk import
+ Shell.log.warn(
+ "Deprecated since 2.0.0. New bulk import technique does not take a failure directory "
+ + "as an argument.");
+ String failureDir = args[1];
+ setTime = Boolean.parseBoolean(cl.getArgs()[2]);
+ shellState.getConnector().tableOperations().importDirectory(shellState.getTableName(), dir,
+ failureDir, setTime);
+ return 0;
+ } else {
+ shellState.printException(
+ new IllegalArgumentException(String.format("Expected 2 or 3 arguments. There %s %d.",
+ args.length == 1 ? "was" : "were", args.length)));
+ printHelp(shellState);
+ }
- shellState.getConnector().tableOperations().importDirectory(shellState.getTableName(), dir,
- failureDir, setTime);
return 0;
}
@Override
public int numArgs() {
- return 3;
+ return Shell.NO_FIXED_ARG_LENGTH_CHECK;
}
@Override
public String usage() {
- return getName() + " <directory> <failureDirectory> true|false";
+ return getName() + " <directory> [failureDirectory] true|false";
}
}