Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.0.0
-
Any Spark Runtime
Description
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
Attachments
Issue Links
- is duplicated by
-
SPARK-10318 Getting issue in spark connectivity with cassandra
- Resolved
- links to