Ah, it seems you have to put 'order by' after the where clause. From: "Foster, Craig" <foscr...@amazon.com<mailto:foscr...@amazon.com>> Reply-To: "user@sqoop.apache.org<mailto:user@sqoop.apache.org>" <user@sqoop.apache.org<mailto:user@sqoop.apache.org>> Date: Friday, February 12, 2016 at 12:21 AM To: "user@sqoop.apache.org<mailto:user@sqoop.apache.org>" <user@sqoop.apache.org<mailto:user@sqoop.apache.org>> Subject: Order by in query
I’m trying to do an ‘order by’ on my import query. I want the data to be written to one partition in sequence. I can’t use an order by for some reason. This is correct syntax in mysql: "select * from test.sqooptest order by emails" [works] But when I try with Sqoop I get an error (below). Can someone clue me in on how to do this? sqoop import --connect jdbc:mariadb://$HOSTNAME/test --query 'select * from sqooptest order by emails where $CONDITIONS' -m 1 --target-dir import --driver org.mariadb.jdbc.Driver --username sqooptest --password sqoop 16/02/12 08:13:07 INFO manager.SqlManager: Executing SQL statement: select * from sqooptest order by emails where (1 = 0) Feb 12, 2016 8:13:07 AM org.mariadb.jdbc.internal.mysql.MySQLProtocol getResult WARNING: Could not execute query sql : 'select * from sqooptest order by emails where (1 = 0) ': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where (1 = 0)' at line 1 16/02/12 08:13:07 ERROR manager.SqlManager: Error executing statement: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where (1 = 0)' at line 1 Query is: sql : 'select * from sqooptest order by emails where (1 = 0) ' java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where (1 = 0)' at line 1 Query is: sql : 'select * from sqooptest order by emails where (1 = 0) ' at org.mariadb.jdbc.internal.SQLExceptionMapper.get(SQLExceptionMapper.java:138) at org.mariadb.jdbc.internal.SQLExceptionMapper.throwException(SQLExceptionMapper.java:106) at org.mariadb.jdbc.MySQLStatement.executeQueryEpilog(MySQLStatement.java:252) at org.mariadb.jdbc.MySQLStatement.execute(MySQLStatement.java:278) at org.mariadb.jdbc.MySQLStatement.executeQuery(MySQLStatement.java:333) at org.mariadb.jdbc.MySQLPreparedStatement.executeQuery(MySQLPreparedStatement.java:104) at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:758) at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:767) at org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:270) at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:241) at org.apache.sqoop.manager.SqlManager.getColumnTypesForQuery(SqlManager.java:234) at org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:304) at org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1833) at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1645) at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107) at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478) at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605) at org.apache.sqoop.Sqoop.run(Sqoop.java:143) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179) at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218) at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227) at org.apache.sqoop.Sqoop.main(Sqoop.java:236) Caused by: org.mariadb.jdbc.internal.common.QueryException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where (1 = 0)' at line 1 Query is: sql : 'select * from sqooptest order by emails where (1 = 0) ' at org.mariadb.jdbc.internal.mysql.MySQLProtocol.getResult(MySQLProtocol.java:984) at org.mariadb.jdbc.internal.mysql.MySQLProtocol.executeQuery(MySQLProtocol.java:1038) at org.mariadb.jdbc.internal.mysql.MySQLProtocol.executeQuery(MySQLProtocol.java:1020) at org.mariadb.jdbc.MySQLStatement.execute(MySQLStatement.java:271) ... 19 more 16/02/12 08:13:07 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1651) at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107) at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478) at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605) at org.apache.sqoop.Sqoop.run(Sqoop.java:143) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179) at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218) at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227) at org.apache.sqoop.Sqoop.main(Sqoop.java:236)