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)

Reply via email to