spark-redis
spark-redis copied to clipboard
does spark-redis support in CDH?
mycode :
object SparkToRedisDemo {
def main(args: Array[String]): Unit = {
val sparkSession = SparkSession.builder()
.config("redis.host", "192.168.1.244")
.config("redis.port", "6379")
.appName("spark-redis")
.getOrCreate()
val sc = sparkSession.sparkContext
val datas = sparkSession.read.textFile("hdfs://hadoop1:8020/testData/input/*")
val save = sc.parallelize(Seq[(String, String)]((datas.take(1).toBuffer.toString(), "1")))
sc.setLogLevel("ERROR")
sc.toRedisKV(save)
}
}
in idea is ok ,but i pack it in CDH hue run have a error
<<< Invocation of Spark command completed <<<
No child hadoop job is executed.
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.oozie.action.hadoop.LauncherAM.runActionMain(LauncherAM.java:410)
at org.apache.oozie.action.hadoop.LauncherAM.access$300(LauncherAM.java:55)
at org.apache.oozie.action.hadoop.LauncherAM$2.run(LauncherAM.java:223)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1726)
at org.apache.oozie.action.hadoop.LauncherAM.run(LauncherAM.java:217)
at org.apache.oozie.action.hadoop.LauncherAM$1.run(LauncherAM.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1726)
at org.apache.oozie.action.hadoop.LauncherAM.main(LauncherAM.java:141)
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
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:68)
at com.redislabs.provider.redis.RedisConfig.clusterEnabled(RedisConfig.scala:181)
at com.redislabs.provider.redis.RedisConfig.getNodes(RedisConfig.scala:292)
at com.redislabs.provider.redis.RedisConfig.getHosts(RedisConfig.scala:208)
at com.redislabs.provider.redis.RedisConfig.
i set redis.host is 192.168.18.244 but it doesn't take effect . i don't know why?
can i have somebody help me ? thanks
tip sorry for my english is bad ,hope you can understand
Hi,
The name of configuration parameters are wrong, they should be prefixed with 'spark'
val sparkSession = SparkSession.builder()
.config("spark.redis.host", "192.168.1.244")
.config("spark.redis.port", "6379")
.appName("spark-redis")
.getOrCreate()
Documentation with available configuration parameters https://github.com/RedisLabs/spark-redis/blob/master/doc/configuration.md