You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ar...@apache.org on 2011/09/15 08:55:33 UTC
svn commit: r1170977 - in /incubator/sqoop/trunk/src:
java/com/cloudera/sqoop/orm/AvroSchemaGenerator.java
test/com/cloudera/sqoop/TestAvroImportExportRoundtrip.java
Author: arvind
Date: Thu Sep 15 06:55:33 2011
New Revision: 1170977
URL: http://svn.apache.org/viewvc?rev=1170977&view=rev
Log:
SQOOP-332. Cannot use --as-avrodatafile with --query.
(Joseph Boyd via Arvind Prabhakar)
Modified:
incubator/sqoop/trunk/src/java/com/cloudera/sqoop/orm/AvroSchemaGenerator.java
incubator/sqoop/trunk/src/test/com/cloudera/sqoop/TestAvroImportExportRoundtrip.java
Modified: incubator/sqoop/trunk/src/java/com/cloudera/sqoop/orm/AvroSchemaGenerator.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/java/com/cloudera/sqoop/orm/AvroSchemaGenerator.java?rev=1170977&r1=1170976&r2=1170977&view=diff
==============================================================================
--- incubator/sqoop/trunk/src/java/com/cloudera/sqoop/orm/AvroSchemaGenerator.java (original)
+++ incubator/sqoop/trunk/src/java/com/cloudera/sqoop/orm/AvroSchemaGenerator.java Thu Sep 15 06:55:33 2011
@@ -63,10 +63,13 @@ public class AvroSchemaGenerator {
field.addProp("sqlType", Integer.toString(sqlType));
fields.add(field);
}
- String doc = "Sqoop import of " + tableName;
- Schema schema = Schema.createRecord(tableName, doc, null, false);
+
+ String avroTableName = (tableName == null ? "QueryResult" : tableName);
+
+ String doc = "Sqoop import of " + avroTableName;
+ Schema schema = Schema.createRecord(avroTableName, doc, null, false);
schema.setFields(fields);
- schema.addProp("tableName", tableName);
+ schema.addProp("tableName", avroTableName);
return schema;
}
Modified: incubator/sqoop/trunk/src/test/com/cloudera/sqoop/TestAvroImportExportRoundtrip.java
URL: http://svn.apache.org/viewvc/incubator/sqoop/trunk/src/test/com/cloudera/sqoop/TestAvroImportExportRoundtrip.java?rev=1170977&r1=1170976&r2=1170977&view=diff
==============================================================================
--- incubator/sqoop/trunk/src/test/com/cloudera/sqoop/TestAvroImportExportRoundtrip.java (original)
+++ incubator/sqoop/trunk/src/test/com/cloudera/sqoop/TestAvroImportExportRoundtrip.java Thu Sep 15 06:55:33 2011
@@ -44,6 +44,16 @@ public class TestAvroImportExportRoundtr
public static final Log LOG = LogFactory
.getLog(TestAvroImportExportRoundtrip.class.getName());
+ public void testRoundtripQuery() throws IOException, SQLException {
+ String[] argv = {};
+
+ runImport(getOutputArgvForQuery(true));
+ deleteTableData();
+ runExport(getExportArgvForQuery(true, 10, 10, newStrArray(argv, "-m", "" + 1)));
+
+ checkFirstColumnSum();
+ }
+
public void testRoundtrip() throws IOException, SQLException {
String[] argv = {};
@@ -81,13 +91,79 @@ public class TestAvroImportExportRoundtr
/**
* Create the argv to pass to Sqoop.
+ *
+ * @return the argv as an array of strings.
+ */
+ protected String[] getOutputArgvForQuery(boolean includeHadoopFlags) {
+ ArrayList<String> args = new ArrayList<String>();
+
+ if (includeHadoopFlags) {
+ CommonArgs.addHadoopFlags(args);
+ }
+
+ args.add("--query");
+ args.add("select * from " + HsqldbTestServer.getTableName() + " where $CONDITIONS");
+ args.add("--connect");
+ args.add(HsqldbTestServer.getUrl());
+ args.add("--target-dir");
+ args.add(getWarehouseDir() + "/query_result");
+ args.add("--split-by");
+ args.add("INTFIELD1");
+ args.add("--as-avrodatafile");
+
+ return args.toArray(new String[0]);
+ }
+
+ protected String [] getExportArgv(boolean includeHadoopFlags,
+ int rowsPerStmt, int statementsPerTx, String... additionalArgv) {
+ ArrayList<String> args = formatAdditionalArgs(additionalArgv);
+
+ args.add("--table");
+ args.add(getTableName());
+ args.add("--export-dir");
+ args.add(getTablePath().toString());
+ args.add("--connect");
+ args.add(getConnectString());
+ args.add("-m");
+ args.add("1");
+
+ LOG.debug("args:");
+ for (String a : args) {
+ LOG.debug(" " + a);
+ }
+
+ return args.toArray(new String[0]);
+ }
+
+ protected String [] getExportArgvForQuery(boolean includeHadoopFlags,
+ int rowsPerStmt, int statementsPerTx, String... additionalArgv) {
+ ArrayList<String> args = formatAdditionalArgs(additionalArgv);
+
+ args.add("--table");
+ args.add(getTableName());
+ args.add("--export-dir");
+ args.add(getWarehouseDir() + "/query_result");
+ args.add("--connect");
+ args.add(getConnectString());
+ args.add("-m");
+ args.add("1");
+
+ LOG.debug("args:");
+ for (String a : args) {
+ LOG.debug(" " + a);
+ }
+
+ return args.toArray(new String[0]);
+ }
+
+ /**
+ * Create the argv to pass to Sqoop.
* @param includeHadoopFlags if true, then include -D various.settings=values
* @param rowsPerStmt number of rows to export in a single INSERT statement.
* @param statementsPerTx ## of statements to use in a transaction.
* @return the argv as an array of strings.
*/
- protected String [] getExportArgv(boolean includeHadoopFlags,
- int rowsPerStmt, int statementsPerTx, String... additionalArgv) {
+ protected ArrayList<String> formatAdditionalArgs(String... additionalArgv) {
ArrayList<String> args = new ArrayList<String>();
// Any additional Hadoop flags (-D foo=bar) are prepended.
@@ -120,22 +196,7 @@ public class TestAvroImportExportRoundtr
}
}
}
-
- args.add("--table");
- args.add(getTableName());
- args.add("--export-dir");
- args.add(getTablePath().toString());
- args.add("--connect");
- args.add(getConnectString());
- args.add("-m");
- args.add("1");
-
- LOG.debug("args:");
- for (String a : args) {
- LOG.debug(" " + a);
- }
-
- return args.toArray(new String[0]);
+ return args;
}
// this test just uses the two int table.