1

我在 databricks 中安装了以下 jar "com.redislabs:spark-redis_2.12:2.5.0"。并尝试使用各自的身份验证创建火花会话

下面是我使用凭据创建火花会话的代码

redis= SparkSession.builder.appName("redis_connection").config("spark.redis.host", "hostname").config("spark.redis.port", "port").config("spark.redis.auth", "pass").getOrCreate()

但是当我尝试使用以下代码保存它时

df.write.format("org.apache.spark.sql.redis").option("table", "velocity").option("key.column", "name").option("ttl", 30).save()

这会引发以下错误。

Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host localhost:6379

这显然意味着连接到localhost而不是我提供的主机名。如何在数据块中使用主机名和密码传递 jar 配置以验证连接。

4

2 回答 2

1

最有可能的 databricks 选择了未设置配置参数的错误 spark 会话。您可以尝试两种选择:

  1. 在 Databricks 集群配置中设置和spark.redis.host。转到集群 -> 编辑 -> 高级选项 -> Spark -> Spark Configspark.redis.portspark.redis.auth
  2. 在隐式创建的spark会话中设置选项,spark.conf.set("spark.redis.host", "host")与其他参数相同。
于 2021-03-11T10:13:31.037 回答
0

我在使用类似配置通过spark将数据摄取到redis时遇到了同样的错误,我使用主机、端口和身份验证作为配置而不是spark.redis。*,这对我有用

import scala.collection.mutable.HashMap
def getRedisClusterProperties(): HashMap[String,String] = {
    val properties = new HashMap[String,String]
    properties.put("host","<host>")
    properties.put("port","6379")
    properties.put("auth","<auth>")
    properties
}

df.write.mode(SaveMode.Overwrite).format("org.apache.spark.sql.redis").options(getRedisClusterProperties()).option("table","<table_name>").option("key.column","<column_name>").save
于 2021-08-06T11:58:04.030 回答