HI All, I am getting "*.UnauthorizedException: User <UserIDXYZ> has no SELECT permission on <table system.size_estimates> or any of its parents*" error while Spark job is fetching data from Cassandra but could able to save data into Cassandra with out any issues
Note: With the same user <UserIDXYZ>, I could able to access and query the table in CQL UI and code used in Spark Job has been tested in Spark Shell and it is working fine Please find the below stack trace WARN 2015-11-17 07:24:23 org.apache.spark.scheduler.DAGScheduler: Creating new stage failed due to exception - job: 0 com.datastax.driver.core.exceptions.UnauthorizedException:* User <* *UserIDXYZ**> has no SELECT permission on <table system.size_estimates> or any of its parents* at com.datastax.driver.core.exceptions.UnauthorizedException.copy(UnauthorizedException.java:36) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.DefaultResultSetFuture.extractCauseFromExecutionException(DefaultResultSetFuture.java:269) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:183) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:52) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:44) ~[cassandra-driver-core-2.1.7.1.jar:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_51] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_51] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_51] at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_51] at com.datastax.spark.connector.cql.SessionProxy.invoke(SessionProxy.scala:33) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.sun.proxy.$Proxy10.execute(Unknown Source) ~[na:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_51] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_51] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_51] at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_51] at com.datastax.spark.connector.cql.SessionProxy.invoke(SessionProxy.scala:33) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.sun.proxy.$Proxy10.execute(Unknown Source) ~[na:na] at com.datastax.spark.connector.rdd.partitioner.DataSizeEstimates$$anonfun$tokenRanges$1.apply(DataSizeEstimates.scala:40) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.rdd.partitioner.DataSizeEstimates$$anonfun$tokenRanges$1.apply(DataSizeEstimates.scala:38) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$withSessionDo$1.apply(CassandraConnector.scala:110) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$withSessionDo$1.apply(CassandraConnector.scala:109) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.cql.CassandraConnector.closeResourceAfterUse(CassandraConnector.scala:139) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.cql.CassandraConnector.withSessionDo(CassandraConnector.scala:109) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.rdd.partitioner.DataSizeEstimates.tokenRanges$lzycompute(DataSizeEstimates.scala:38) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.rdd.partitioner.DataSizeEstimates.tokenRanges(DataSizeEstimates.scala:37) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.rdd.partitioner.DataSizeEstimates.dataSizeInBytes$lzycompute(DataSizeEstimates.scala:81) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.rdd.partitioner.DataSizeEstimates.dataSizeInBytes(DataSizeEstimates.scala:80) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.rdd.partitioner.CassandraRDDPartitioner.<init>(CassandraRDDPartitioner.scala:39) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.rdd.partitioner.CassandraRDDPartitioner$.apply(CassandraRDDPartitioner.scala:176) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at com.datastax.spark.connector.rdd.CassandraTableScanRDD.getPartitions(CassandraTableScanRDD.scala:144) ~[spark-cassandra-connector_2.10-1.4.0.jar:1.4.0] at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at scala.Option.getOrElse(Option.scala:120) ~[scala-library-2.10.5.jar:na] at org.apache.spark.rdd.RDD.partitions(RDD.scala:217) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:32) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at scala.Option.getOrElse(Option.scala:120) ~[scala-library-2.10.5.jar:na] at org.apache.spark.rdd.RDD.partitions(RDD.scala:217) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:32) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at scala.Option.getOrElse(Option.scala:120) ~[scala-library-2.10.5.jar:na] at org.apache.spark.rdd.RDD.partitions(RDD.scala:217) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:32) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at scala.Option.getOrElse(Option.scala:120) ~[scala-library-2.10.5.jar:na] at org.apache.spark.rdd.RDD.partitions(RDD.scala:217) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.ShuffleDependency.<init>(Dependency.scala:82) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.ShuffledRDD.getDependencies(ShuffledRDD.scala:78) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.RDD$$anonfun$dependencies$2.apply(RDD.scala:206) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.rdd.RDD$$anonfun$dependencies$2.apply(RDD.scala:204) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at scala.Option.getOrElse(Option.scala:120) ~[scala-library-2.10.5.jar:na] at org.apache.spark.rdd.RDD.dependencies(RDD.scala:204) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.scheduler.DAGScheduler.visit$1(DAGScheduler.scala:321) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.scheduler.DAGScheduler.getParentStages(DAGScheduler.scala:333) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.scheduler.DAGScheduler.getParentStagesAndId(DAGScheduler.scala:234) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.scheduler.DAGScheduler.newResultStage(DAGScheduler.scala:270) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.scheduler.DAGScheduler.handleJobSubmitted(DAGScheduler.scala:768) ~[spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1426) [spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1418) [spark-core_2.10-1.4.1.1.jar:1.4.1.1] at org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48) [spark-core_2.10-1.4.1.1.jar:1.4.1.1] Caused by: *com.datastax.driver.core.exceptions.UnauthorizedException: User <**UserIDXYZ**> has no SELECT permission on <table system.size_estimates> or any of its parents* at com.datastax.driver.core.Responses$Error.asException(Responses.java:101) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.DefaultResultSetFuture.onSet(DefaultResultSetFuture.java:118) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:183) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.RequestHandler.access$2300(RequestHandler.java:45) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(RequestHandler.java:748) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:573) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:991) ~[cassandra-driver-core-2.1.7.1.jar:na] at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:913) ~[cassandra-driver-core-2.1.7.1.jar:na] at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:254) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.epoll.EpollSocketChannel$EpollSocketUnsafe.epollInReady(EpollSocketChannel.java:722) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:326) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:264) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) ~[netty-all-4.0.23.Final.jar:4.0.23.Final] at java.lang.Thread.run(Thread.java:745) Please let me know if any solutions to fix the same Regards, Satish Chandra