Paul Wu created SPARK-17614:
-------------------------------
Summary: sparkSession.read() .jdbc(***) use the sql syntax "where
1=0" that Cassandra does not support
Key: SPARK-17614
URL: https://issues.apache.org/jira/browse/SPARK-17614
Project: Spark
Issue Type: Bug
Components: SQL
Affects Versions: 2.0.0
Environment: Any Spark Runtime
Reporter: Paul Wu
I have the code like the following with Cassandra JDBC
(https://github.com/adejanovski/cassandra-jdbc-wrapper):
final String dbTable= "sql_demo";
Dataset<Row> jdbcDF
= sparkSession.read()
.jdbc(CASSANDRA_CONNECTION_URL, dbTable, connectionProperties);
List<Row> rows = jdbcDF.collectAsList();
It threw the error:
Exception in thread "main" java.sql.SQLTransientException:
com.datastax.driver.core.exceptions.SyntaxError: line 1:29 no viable
alternative at input '1' (SELECT * FROM sql_demo WHERE [1]...)
at
com.github.adejanovski.cassandra.jdbc.CassandraPreparedStatement.<init>(CassandraPreparedStatement.java:108)
at
com.github.adejanovski.cassandra.jdbc.CassandraConnection.prepareStatement(CassandraConnection.java:371)
at
com.github.adejanovski.cassandra.jdbc.CassandraConnection.prepareStatement(CassandraConnection.java:348)
at
com.github.adejanovski.cassandra.jdbc.CassandraConnection.prepareStatement(CassandraConnection.java:48)
The reason is that the Spark jdbc code uses the sql syntax "where 1=0"
somewhere (to get the schema?), but Cassandra does not support this syntax. Not
sure how this issue can be resolved...this is because CQL is not standard sql.
The following log shows more information:
16/09/20 13:16:35 INFO CassandraConnection 138: Datacenter: %s; Host: %s;
Rack: %s
16/09/20 13:16:35 TRACE CassandraPreparedStatement 98: CQL: SELECT * FROM
sql_demo WHERE 1=0
16/09/20 13:16:35 TRACE RequestHandler 71: [19400322]
com.datastax.driver.core.Statement$1@41ccb3b9
16/09/20 13:16:35 TRACE RequestHandler 272: [19400322-1] Starting
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]