Hi,
I prepared some tables with cassandra using CQL. In fact, I tried to apply aggregation queries on my data (sum, avg, etc..). So, I used presto-cassandra with java.
I've been trying to connect to presto and run some queries through jdbc, but I keep getting errors. The code is :
public class tester_cass {
public static void connect() {
try {
Class.forName("com.facebook.presto.jdbc.PrestoDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
PrestoConnection connection = null;
try {
connection = (PrestoConnection) DriverManager.getConnection("jdbc:presto://localhost:8888/cassandra/premierkeys", "test", "");
} catch (SQLException e) {
e.printStackTrace();
}
PrestoStatement statement = null;
try {
statement = (PrestoStatement) connection.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
String query = "SELECT * FROM client";
ResultSet rs = null;
try {
rs = statement.executeQuery(query);
} catch (SQLException e) {
e.printStackTrace();
}
try {
while(rs.next()) {
System.out.println(rs.toString());
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws ClassNotFoundException, SQLException {
connect();
}
}
But when I run this code I get:
java.sql.SQLException: Error executing query
at com.facebook.presto.jdbc.PrestoStatement.executeQuery(PrestoStatement.java:54)
at tester_cass.connect(tester_cass.java:42)
at tester_cass.main(tester_cass.java:58)
Caused by: java.lang.IllegalStateException: Response does not contain a JSON value
at com.facebook.presto.jdbc.internal.airlift.http.client.FullJsonResponseHandler$JsonResponse.getValue(FullJsonResponseHandler.java:148)
at com.facebook.presto.jdbc.internal.client.StatementClient.<init>(StatementClient.java:82)
at com.facebook.presto.jdbc.QueryExecutor.startQuery(QueryExecutor.java:60)
at com.facebook.presto.jdbc.PrestoConnection.startQuery(PrestoConnection.java:541)
at com.facebook.presto.jdbc.PrestoStatement.executeQuery(PrestoStatement.java:49)
... 2 more
Caused by: java.lang.IllegalArgumentException: Unable to create class com.facebook.presto.jdbc.internal.client.QueryResults from JSON response:
{"message": "Resource not found.", "type": "NoSuchResource", "brief": "error"}
at com.facebook.presto.jdbc.internal.airlift.http.client.FullJsonResponseHandler$JsonResponse.<init>(FullJsonResponseHandler.java:109)
at com.facebook.presto.jdbc.internal.airlift.http.client.FullJsonResponseHandler.handle(FullJsonResponseHandler.java:65)
at com.facebook.presto.jdbc.internal.airlift.http.client.FullJsonResponseHandler.handle(FullJsonResponseHandler.java:33)
at com.facebook.presto.jdbc.internal.airlift.http.client.jetty.JettyHttpClient.execute(JettyHttpClient.java:224)
... 6 more
Caused by: java.lang.IllegalArgumentException: Invalid [simple type, class com.facebook.presto.jdbc.internal.client.QueryResults] json bytes
at com.facebook.presto.jdbc.internal.airlift.json.JsonCodec.fromJson(JsonCodec.java:174)
at com.facebook.presto.jdbc.internal.airlift.http.client.FullJsonResponseHandler$JsonResponse.<init>(FullJsonResponseHandler.java:106)
... 9 more
Caused by: com.facebook.presto.jdbc.internal.jackson.databind.JsonMappingException: Instantiation of [simple type, class com.facebook.presto.jdbc.internal.client.QueryResults] value failed: id is null
at com.facebook.presto.jdbc.internal.jackson.databind.deser.std.StdValueInstantiator.wrapException(StdValueInstantiator.java:434)
at com.facebook.presto.jdbc.internal.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:243)
at com.facebook.presto.jdbc.internal.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:158)
at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:614)
at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:393)
at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:289)
at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
at com.facebook.presto.jdbc.internal.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2793)
at com.facebook.presto.jdbc.internal.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2044)
at com.facebook.presto.jdbc.internal.airlift.json.JsonCodec.fromJson(JsonCodec.java:171)
... 10 more
Caused by: java.lang.NullPointerException: id is null
at com.facebook.presto.jdbc.internal.guava.base.Preconditions.checkNotNull(Preconditions.java:229)
at com.facebook.presto.jdbc.internal.client.QueryResults.<init>(QueryResults.java:70)
at com.facebook.presto.jdbc.internal.client.QueryResults.<init>(QueryResults.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.facebook.presto.jdbc.internal.jackson.databind.introspect.AnnotatedConstructor.call(AnnotatedConstructor.java:125)
at com.facebook.presto.jdbc.internal.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:239)
... 18 more
Exception in thread "main" java.lang.NullPointerException
at tester_cass.connect(tester_cass.java:48)
at tester_cass.main(tester_cass.java:58)
what is the problem ?