You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ma...@apache.org on 2016/11/08 17:24:23 UTC
sqoop git commit: SQOOP-3034: HBase import should fail fast if using
anything other than as-textfile
Repository: sqoop
Updated Branches:
refs/heads/trunk b60aef1ff -> 53b490e14
SQOOP-3034: HBase import should fail fast if using anything other than as-textfile
(Boglarka Egyed via Attila Szabo)
Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/53b490e1
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/53b490e1
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/53b490e1
Branch: refs/heads/trunk
Commit: 53b490e146e9b5c71fc2e94640d8c8e1d03d9eb7
Parents: b60aef1
Author: Attila Szabo <ma...@apache.org>
Authored: Tue Nov 8 18:22:02 2016 +0100
Committer: Attila Szabo <ma...@apache.org>
Committed: Tue Nov 8 18:23:52 2016 +0100
----------------------------------------------------------------------
.../org/apache/sqoop/tool/BaseSqoopTool.java | 5 ++
.../tool/ImportToolValidateOptionsTest.java | 52 ++++++++++++++++++++
2 files changed, 57 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sqoop/blob/53b490e1/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/tool/BaseSqoopTool.java b/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
index 13a9697..468bf34 100644
--- a/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
+++ b/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
@@ -1689,6 +1689,11 @@ public abstract class BaseSqoopTool extends com.cloudera.sqoop.tool.SqoopTool {
BaseSqoopTool.HBASE_TABLE_ARG);
throw new InvalidOptionsException(validationMessage);
}
+
+ if (options.getHBaseTable() != null && options.getFileLayout() != SqoopOptions.FileLayout.TextFile) {
+ String validationMessage = String.format("Can't run HBase import with file layout: %s", options.getFileLayout());
+ throw new InvalidOptionsException(validationMessage);
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/sqoop/blob/53b490e1/src/test/org/apache/sqoop/tool/ImportToolValidateOptionsTest.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/sqoop/tool/ImportToolValidateOptionsTest.java b/src/test/org/apache/sqoop/tool/ImportToolValidateOptionsTest.java
index 503a863..a792151 100644
--- a/src/test/org/apache/sqoop/tool/ImportToolValidateOptionsTest.java
+++ b/src/test/org/apache/sqoop/tool/ImportToolValidateOptionsTest.java
@@ -5,12 +5,39 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+import java.util.Arrays;
+
+import static com.cloudera.sqoop.SqoopOptions.FileLayout.SequenceFile;
+import static com.cloudera.sqoop.SqoopOptions.FileLayout.AvroDataFile;
+import static com.cloudera.sqoop.SqoopOptions.FileLayout.ParquetFile;
+import static com.cloudera.sqoop.SqoopOptions.FileLayout.TextFile;
+
+@RunWith(Parameterized.class)
public class ImportToolValidateOptionsTest {
+ @Parameters(name = "fileLayout = {0}, validationMessage = {1}")
+ public static Iterable<? extends Object> fileLayoutAndValidationMessageParameters() {
+ return Arrays.asList(new Object[] {SequenceFile, String.format("Can't run HBase import with file layout: %s", SequenceFile)},
+ new Object[] {AvroDataFile, String.format("Can't run HBase import with file layout: %s", AvroDataFile)},
+ new Object[] {ParquetFile, String.format("Can't run HBase import with file layout: %s", ParquetFile)});
+ }
+
private static final String TABLE_NAME = "testTableName";
private static final String CONNECT_STRING = "testConnectString";
private static final String CHECK_COLUMN_NAME = "checkColumnName";
+ private static final String HBASE_TABLE_NAME = "testHBaseTableName";
+ private static final String HBASE_COL_FAMILY = "testHBaseColumnFamily";
+ private SqoopOptions.FileLayout fileLayout;
+ private String validationMessage;
+
+ public ImportToolValidateOptionsTest(SqoopOptions.FileLayout fileLayout, String validationMessage) {
+ this.fileLayout = fileLayout;
+ this.validationMessage = validationMessage;
+ }
@Rule
public ExpectedException thrown = ExpectedException.none();
@@ -81,6 +108,31 @@ public class ImportToolValidateOptionsTest {
importTool.validateOptions(options);
}
+ @Test
+ public void testValidationFailsWithHBaseImportAndFileLayoutDifferentFromTexFile() throws Exception {
+ SqoopOptions options = buildBaseSqoopOptions();
+ options.setHBaseTable(HBASE_TABLE_NAME);
+ options.setHBaseColFamily(HBASE_COL_FAMILY);
+ options.setFileLayout(fileLayout);
+
+ thrown.expect(SqoopOptions.InvalidOptionsException.class);
+ thrown.expectMessage(validationMessage);
+
+ importTool.validateOptions(options);
+ }
+
+ @Test
+ public void testValidationSucceedsWithHBaseImportAndAsTextFile() throws Exception {
+ SqoopOptions options = buildBaseSqoopOptions();
+ options.setHBaseTable(HBASE_TABLE_NAME);
+ options.setHBaseColFamily(HBASE_COL_FAMILY);
+ options.setFileLayout(TextFile);
+
+ thrown.none();
+
+ importTool.validateOptions(options);
+ }
+
private SqoopOptions buildBaseSqoopOptions() {
SqoopOptions result = new SqoopOptions();
result.setTableName(TABLE_NAME);