Repository: sqoop Updated Branches: refs/heads/sqoop2 a97d10cd7 -> 43160f72d
SQOOP-1879: Sqoop2: Convert the List in Schema Columns to Array for better lookup time (Veena Basavaraj via Abraham Elmahrek) Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/43160f72 Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/43160f72 Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/43160f72 Branch: refs/heads/sqoop2 Commit: 43160f72d4f07446a9c1a8050327e04b64b352bd Parents: a97d10c Author: Abraham Elmahrek <[email protected]> Authored: Mon Dec 15 19:25:21 2014 -0800 Committer: Abraham Elmahrek <[email protected]> Committed: Mon Dec 15 21:03:55 2014 -0800 ---------------------------------------------------------------------- .../java/org/apache/sqoop/json/util/SchemaSerialization.java | 2 +- common/src/main/java/org/apache/sqoop/schema/Schema.java | 6 +++++- .../apache/sqoop/connector/jdbc/GenericJdbcExtractor.java | 2 +- .../apache/sqoop/connector/kite/util/KiteDataTypeUtil.java | 2 +- .../sqoop/connector/idf/CSVIntermediateDataFormat.java | 8 ++++---- .../org/apache/sqoop/connector/matcher/LocationMatcher.java | 4 ++-- .../java/org/apache/sqoop/connector/matcher/NameMatcher.java | 8 ++++---- 7 files changed, 18 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java b/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java index fa9cd5c..6b9a7f9 100644 --- a/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java +++ b/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java @@ -90,7 +90,7 @@ public class SchemaSerialization { object.put(NOTE, schema.getNote()); } JSONArray columnArray = new JSONArray(); - for (Column column : schema.getColumns()) { + for (Column column : schema.getColumnsArray()) { columnArray.add(extractColumn(column)); } object.put(COLUMNS, columnArray); http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/common/src/main/java/org/apache/sqoop/schema/Schema.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/org/apache/sqoop/schema/Schema.java b/common/src/main/java/org/apache/sqoop/schema/Schema.java index 496f6e3..9eef72b 100644 --- a/common/src/main/java/org/apache/sqoop/schema/Schema.java +++ b/common/src/main/java/org/apache/sqoop/schema/Schema.java @@ -117,7 +117,11 @@ public class Schema { return this; } - public List<Column> getColumns() { + public Column[] getColumnsArray() { + return columns.toArray(new Column[columns.size()]); + } + + public List<Column> getColumnsList() { return columns; } http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java ---------------------------------------------------------------------- diff --git a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java index ab1c64a..03a2930 100644 --- a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java +++ b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java @@ -58,7 +58,7 @@ public class GenericJdbcExtractor extends Extractor<LinkConfiguration, FromJobCo ResultSet resultSet = executor.executeQuery(query); Schema schema = context.getSchema(); - Column[] schemaColumns = schema.getColumns().toArray(new Column[schema.getColumns().size()]); + Column[] schemaColumns = schema.getColumnsArray(); try { ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java ---------------------------------------------------------------------- diff --git a/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java b/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java index 23a715f..d3a7847 100644 --- a/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java +++ b/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java @@ -59,7 +59,7 @@ public class KiteDataTypeUtil { Schema schema = Schema.createRecord(name, doc, namespace, false); List<Schema.Field> fields = new ArrayList<Schema.Field>(); - for (Column column : sqoopSchema.getColumns()) { + for (Column column : sqoopSchema.getColumnsArray()) { Schema.Field field = new Schema.Field(column.getName(), createAvroFieldSchema(column), null, null); field.addProp(SQOOP_TYPE, column.getType().toString()); http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java ---------------------------------------------------------------------- diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java index 7529676..846aefd 100644 --- a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java +++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java @@ -100,7 +100,7 @@ public class CSVIntermediateDataFormat extends IntermediateDataFormat<String> { return; } this.schema = schema; - List<Column> columns = schema.getColumns(); + Column[] columns = schema.getColumnsArray(); int i = 0; for (Column col : columns) { if (isColumnStringType(col)) { @@ -192,13 +192,13 @@ public class CSVIntermediateDataFormat extends IntermediateDataFormat<String> { return null; } - if (fieldStringArray.length != schema.getColumns().size()) { + if (fieldStringArray.length != schema.getColumnsArray().length) { throw new SqoopException(CSVIntermediateDataFormatError.CSV_INTERMEDIATE_DATA_FORMAT_0005, "The data " + getCSVTextData() + " has the wrong number of fields."); } Object[] objectArray = new Object[fieldStringArray.length]; - Column[] columnArray = schema.getColumns().toArray(new Column[fieldStringArray.length]); + Column[] columnArray = schema.getColumnsArray(); for (int i = 0; i < fieldStringArray.length; i++) { // check for NULL field and bail out immediately if (fieldStringArray[i].equals(NULL_VALUE)) { @@ -266,7 +266,7 @@ public class CSVIntermediateDataFormat extends IntermediateDataFormat<String> { @Override public void setObjectData(Object[] data) { Set<Integer> nullValueIndices = new HashSet<Integer>(); - Column[] columnArray = schema.getColumns().toArray(new Column[data.length]); + Column[] columnArray = schema.getColumnsArray(); // check for null for (int i = 0; i < data.length; i++) { if (data[i] == null) { http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java ---------------------------------------------------------------------- diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java index 58b709e..879684c 100644 --- a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java +++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java @@ -42,7 +42,7 @@ public class LocationMatcher extends Matcher { @Override public Object[] getMatchingData(Object[] fields) { - Object[] out = new Object[getToSchema().getColumns().size()]; + Object[] out = new Object[getToSchema().getColumnsArray().length]; int i = 0; @@ -52,7 +52,7 @@ public class LocationMatcher extends Matcher { return fields; } - for (Column col: getToSchema().getColumns()) { + for (Column col: getToSchema().getColumnsArray()) { if (i < fields.length) { if (isNull(fields[i])) { out[i] = null; http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java ---------------------------------------------------------------------- diff --git a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java index 69d5ebd..9c2f7d5 100644 --- a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java +++ b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java @@ -35,21 +35,21 @@ public class NameMatcher extends Matcher { @Override public Object[] getMatchingData(Object[] fields) { - Object[] out = new Object[getToSchema().getColumns().size()]; + Object[] out = new Object[getToSchema().getColumnsArray().length]; HashMap<String,Column> colNames = new HashMap<String, Column>(); - for (Column fromCol: getFromSchema().getColumns()) { + for (Column fromCol: getFromSchema().getColumnsArray()) { colNames.put(fromCol.getName(), fromCol); } int toIndex = 0; - for (Column toCol: getToSchema().getColumns()) { + for (Column toCol: getToSchema().getColumnsArray()) { Column fromCol = colNames.get(toCol.getName()); if (fromCol != null) { - int fromIndex = getFromSchema().getColumns().indexOf(fromCol); + int fromIndex = getFromSchema().getColumnsList().indexOf(fromCol); if (isNull(fields[fromIndex])) { out[toIndex] = null; } else {
