我使用 CQL 准备了一些带有 cassandra 的表。事实上,我尝试对我的数据应用聚合查询(sum、avg 等)。所以,我在 java 中使用了 presto-cassandra。我已将 presto 配置如下:
配置属性:
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri= `http://localhost:8080`
JVM.properties:
-server
-Xmx16G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:PermSize=150M
-XX:MaxPermSize=150M
-XX:ReservedCodeCacheSize=150M
-Xbootclasspath/p:C:/Presto/lib/floatingdecimal-0.1.jar
日志属性:
com.facebook.presto=INFO
节点属性:
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=C:/Presto/data
cassandra.properties:
connector.name=cassandra
cassandra.contact-points=localhost
cassandra.native-protocol-port=9142
cassandra.thrift-port=9160
然后,我一直在尝试连接到 presto 并通过 jdbc 运行一些查询,但我不断收到错误消息。代码是:
public static void connect() throws ClassNotFoundException, SQLException{
Class.forName("com.facebook.presto.jdbc.PrestoDriver");
PrestoConnection connection = (PrestoConnection) DriverManager.getConnection("jdbc:presto://localhost:8080/cassandra/premierkeys", "test","");
PrestoStatement statement = (PrestoStatement) connection.createStatement();
ResultSet rs = statement.executeQuery("select * from client");
while(rs.next()) {
System.out.println(rs.getString(1));
}
}
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// TODO Auto-generated method stub
connect();
}
此外,maven 依赖项如下所示:
<dependencies>
<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto-cassandra</artifactId>
<version>0.72</version>
<type>zip</type>
</dependency>
<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto-jdbc</artifactId>
<version>0.72</version>
</dependency>
</dependencies>`
但是当我运行这段代码时,我得到:
***juil. 02, 2014 11:32:57 AM com.facebook.presto.jdbc.internal.jetty.util.log.JavaUtilLog info
INFOS: Logging initialized @122ms
Exception in thread "main" java.sql.SQLException: Error executing query
at com.facebook.presto.jdbc.PrestoStatement.executeQuery(PrestoStatement.java:54)
at tester_cass.connect(tester_cass.java:19)
at tester_cass.main(tester_cass.java:26)
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***
问题是什么?