I've defined the Cassandra catalog like this and Cassandra is running on the default port:
connector.name=cassandra
cassandra.contact-points=localhost
In Presto-Cli when I type the command DESCRIBE it works fine but my SELECT command fails because of Thrift connection refused error.
presto:cmf> DESCRIBE stats;
Column | Type | Extra | Comment
----------------+---------+-------+---------
username | varchar | |
a | bigint | |
b | bigint | |
c | bigint | |
d | bigint | |
e | bigint | |
(6 rows)
presto:cmf> SELECT * FROM stats;
Query 20161226_083409_00044_2cdmr failed: java.io.IOException: Unable to connect to server localhost:9160
Trace:
java.lang.RuntimeException: java.io.IOException: Unable to connect to server localhost:9160
at com.facebook.presto.cassandra.CassandraThriftConnectionFactory.create(CassandraThriftConnectionFactory.java:56)
at com.facebook.presto.cassandra.CassandraThriftClient.getRangeMap(CassandraThriftClient.java:38)
at com.facebook.presto.cassandra.CassandraTokenSplitManager.getSplits(CassandraTokenSplitManager.java:65)
at com.facebook.presto.cassandra.CassandraSplitManager.getSplitsByTokenRange(CassandraSplitManager.java:99)
at com.facebook.presto.cassandra.CassandraSplitManager.getSplits(CassandraSplitManager.java:82)
at com.facebook.presto.split.SplitManager.getSplits(SplitManager.java:63)
at com.facebook.presto.sql.planner.DistributedExecutionPlanner$Visitor.visitTableScan(DistributedExecutionPlanner.java:113)
at com.facebook.presto.sql.planner.DistributedExecutionPlanner$Visitor.visitTableScan(DistributedExecutionPlanner.java:93)
at com.facebook.presto.sql.planner.plan.TableScanNode.accept(TableScanNode.java:135)
at com.facebook.presto.sql.planner.DistributedExecutionPlanner.plan(DistributedExecutionPlanner.java:79)
at com.facebook.presto.sql.planner.DistributedExecutionPlanner.plan(DistributedExecutionPlanner.java:84)
at com.facebook.presto.execution.SqlQueryExecution.planDistribution(SqlQueryExecution.java:319)
at com.facebook.presto.execution.SqlQueryExecution.start(SqlQueryExecution.java:232)
at com.facebook.presto.execution.QueuedExecution.lambda$start$1(QueuedExecution.java:62)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Unable to connect to server localhost:9160
at com.facebook.presto.cassandra.CassandraThriftConnectionFactory.createConnection(CassandraThriftConnectionFactory.java:88)
at com.facebook.presto.cassandra.CassandraThriftConnectionFactory.getClientFromAddressList(CassandraThriftConnectionFactory.java:68)
at com.facebook.presto.cassandra.CassandraThriftConnectionFactory.create(CassandraThriftConnectionFactory.java:53)
... 16 more
Caused by: org.apache.thrift.transport.TTransportException: java.net.ConnectException: Connection refused (Connection refused)
at org.apache.thrift.transport.TSocket.open(TSocket.java:185)
at org.apache.thrift.transport.TFramedTransport.open(TFramedTransport.java:81)
at org.apache.cassandra.thrift.TFramedTransportFactory.openTransport(TFramedTransportFactory.java:41)
at com.facebook.presto.cassandra.CassandraThriftConnectionFactory.createConnection(CassandraThriftConnectionFactory.java:84)
... 18 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.thrift.transport.TSocket.open(TSocket.java:180)
... 21 more
you need to enable Cassandra Thrift server first, e.g. after run 'cassandra -f', run 'nodetool enablethrift'
Also, we have a PR that's almost ready to be merged that removes the Thrift client: https://github.com/prestodb/presto/pull/7013. We're still running some final tests on it, but it should be in soon.
@delding @cawallin Thank you. Even though I finally found the solution, I guess it would be a good idea to mention it somewhere in the docs that it needs to be enabled.
Most helpful comment
you need to enable Cassandra Thrift server first, e.g. after run 'cassandra -f', run 'nodetool enablethrift'