diff --git a/src/java/org/apache/sqoop/hive/TableDefWriter.java b/src/java/org/apache/sqoop/hive/TableDefWriter.java index f296897f..f17d9c68 100644 --- a/src/java/org/apache/sqoop/hive/TableDefWriter.java +++ b/src/java/org/apache/sqoop/hive/TableDefWriter.java @@ -21,14 +21,17 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Properties; +import java.util.Set; import org.apache.avro.Schema; import org.apache.commons.lang.StringUtils; @@ -151,19 +154,15 @@ public String getCreateTableStmt() throws IOException { sb.append(outputTableName).append("` ( "); // Check that all explicitly mapped columns are present in result set - for(Object column : userMapping.keySet()) { - boolean found = false; - for(String c : colNames) { - if (c.equals(column)) { - found = true; - break; - } - } + final Set userMappingKeys = new LinkedHashSet<>(userMapping.keySet()); + final List colNamesSet = Arrays.asList(colNames); - if (!found) { - throw new IllegalArgumentException("No column by the name " + column - + "found while importing data"); - } + userMappingKeys.removeAll(colNamesSet); + + if (!userMappingKeys.isEmpty()) { + throw new IllegalArgumentException( + "No user mappings found for columns " + userMappingKeys + + " while importing data"); } boolean first = true; diff --git a/src/test/org/apache/sqoop/hive/TestHiveServer2ParquetImport.java b/src/test/org/apache/sqoop/hive/TestHiveServer2ParquetImport.java index 8cfd776d..55375c13 100644 --- a/src/test/org/apache/sqoop/hive/TestHiveServer2ParquetImport.java +++ b/src/test/org/apache/sqoop/hive/TestHiveServer2ParquetImport.java @@ -235,7 +235,7 @@ public void testHiveImportAsParquetWithMapColumnHiveAndOriginalColumnNameFails() .build(); expectedException.expect(IllegalArgumentException.class); - expectedException.expectMessage("No column by the name C2#INTEGERfound while importing data"); + expectedException.expectMessage("No user mappings found for columns [C2#INTEGER] while importing data"); runImportThrowingException(args); }