RedisLabs/spark-redis

Accessing Elasticache from different AWS Account gives connect timeout error

Closed this issue · 0 comments

Hello,
I am trying to access elasticache (EC) cluster from an AWS account which is totally different from where EC cluster resides. Below, is the error I get:

  at redis.clients.jedis.util.Pool.getResource(Pool.java:59)
  at redis.clients.jedis.JedisPool.getResource(JedisPool.java:234)
  at com.redislabs.provider.redis.ConnectionPool$.connect(ConnectionPool.scala:33)
  at com.redislabs.provider.redis.RedisEndpoint.connect(RedisConfig.scala:69)
  at com.redislabs.provider.redis.RedisConfig.clusterEnabled(RedisConfig.scala:193)
  at com.redislabs.provider.redis.RedisConfig.getNodes(RedisConfig.scala:317)
  at com.redislabs.provider.redis.RedisConfig.getHosts(RedisConfig.scala:233)
  at com.redislabs.provider.redis.RedisConfig.<init>(RedisConfig.scala:132)
  at org.apache.spark.sql.redis.RedisSourceRelation.<init>(RedisSourceRelation.scala:34)
  at org.apache.spark.sql.redis.DefaultSource.createRelation(DefaultSource.scala:21)
  at org.apache.spark.sql.execution.datasources.SaveIntoDataSourceCommand.run(SaveIntoDataSourceCommand.scala:45)
  at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:70)
  at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:68)
  at org.apache.spark.sql.execution.command.ExecutedCommandExec.doExecute(commands.scala:86)
  at org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$1.apply(SparkPlan.scala:173)
  at org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$1.apply(SparkPlan.scala:169)
  at org.apache.spark.sql.execution.SparkPlan$$anonfun$executeQuery$1.apply(SparkPlan.scala:197)
  at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
  at org.apache.spark.sql.execution.SparkPlan.executeQuery(SparkPlan.scala:194)
  at org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:169)
  at org.apache.spark.sql.execution.QueryExecution.toRdd$lzycompute(QueryExecution.scala:114)
  at org.apache.spark.sql.execution.QueryExecution.toRdd(QueryExecution.scala:112)
  at org.apache.spark.sql.DataFrameWriter$$anonfun$runCommand$1.apply(DataFrameWriter.scala:696)
  at org.apache.spark.sql.DataFrameWriter$$anonfun$runCommand$1.apply(DataFrameWriter.scala:696)
  at org.apache.spark.sql.execution.SQLExecution$.org$apache$spark$sql$execution$SQLExecution$$executeQuery$1(SQLExecution.scala:83)
  at org.apache.spark.sql.execution.SQLExecution$$anonfun$withNewExecutionId$1$$anonfun$apply$1.apply(SQLExecution.scala:94)
  at org.apache.spark.sql.execution.QueryExecutionMetrics$.withMetrics(QueryExecutionMetrics.scala:141)
  at org.apache.spark.sql.execution.SQLExecution$.org$apache$spark$sql$execution$SQLExecution$$withMetrics(SQLExecution.scala:178)
  at org.apache.spark.sql.execution.SQLExecution$$anonfun$withNewExecutionId$1.apply(SQLExecution.scala:93)
  at org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:200)
  at org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:92)
  at org.apache.spark.sql.DataFrameWriter.runCommand(DataFrameWriter.scala:696)
  at org.apache.spark.sql.DataFrameWriter.saveToV1Source(DataFrameWriter.scala:305)
  at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:291)
  ... 51 elided
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host beta-na-cmtasindb.pqqqnt.clustercfg.use1.cache.amazonaws.com:6379
  at redis.clients.jedis.Connection.connect(Connection.java:204)
  at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:100)
  at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1866)
  at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:117)
  at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:861)
  at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435)
  at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
  at redis.clients.jedis.util.Pool.getResource(Pool.java:50)
  ... 84 more
Caused by: java.net.SocketTimeoutException: connect timed out
  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:607)
  at redis.clients.jedis.Connection.connect(Connection.java:181)
  ... 91 more

I am using Zeppelin notebook on EMR to access the cluster instance. When I try to access EC cluster residing in the same account as the EMR cluster, I don't face any error. Is there any solution to this?