我试图从Cassandra读取数据并将其写入Redis的特定索引,例如Redis DB 5。
我需要以哈希映射格式将所有数据写入到Redis DB索引5中。
我可以在Redis中保存数据而不需要表名吗?实际上,我只想将所有数据保存到Redis的第5个索引中,而无需表名,这可行吗? 我已经查阅了spark Redis连接器的文档,但是没有找到相关示例。 文档链接:https://github.com/RedisLabs/spark-redis/blob/master/doc/dataframe.md#writing 我目前正在使用spark redis-connector的此版本。
我需要以哈希映射格式将所有数据写入到Redis DB索引5中。
val spark = SparkSession.builder()
.appName("redis-df")
.master("local[*]")
.config("spark.redis.host", "localhost")
.config("spark.redis.port", "6379")
.config("spark.redis.db", 5)
.config("spark.cassandra.connection.host", "localhost")
.getOrCreate()
import spark.implicits._
val someDF = Seq(
(8, "bat"),
(64, "mouse"),
(-27, "horse")
).toDF("number", "word")
someDF.write
.format("org.apache.spark.sql.redis")
.option("keys.pattern", "*")
//.option("table", "person"). // Is it mandatory ?
.save()
我可以在Redis中保存数据而不需要表名吗?实际上,我只想将所有数据保存到Redis的第5个索引中,而无需表名,这可行吗? 我已经查阅了spark Redis连接器的文档,但是没有找到相关示例。 文档链接:https://github.com/RedisLabs/spark-redis/blob/master/doc/dataframe.md#writing 我目前正在使用spark redis-connector的此版本。
<dependency>
<groupId>com.redislabs</groupId>
<artifactId>spark-redis_2.11</artifactId>
<version>2.5.0</version>
</dependency>
有人遇到这个问题吗?有什么解决办法吗?
如果在配置中没有提及表名,我会得到以下错误:
失败
java.lang.IllegalArgumentException: Option 'table' is not set.
at org.apache.spark.sql.redis.RedisSourceRelation$$anonfun$tableName$1.apply(RedisSourceRelation.scala:208)
at org.apache.spark.sql.redis.RedisSourceRelation$$anonfun$tableName$1.apply(RedisSourceRelation.scala:208)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.redis.RedisSourceRelation.tableName(RedisSourceRelation.scala:208)
at org.apache.spark.sql.redis.RedisSourceRelation.saveSchema(RedisSourceRelation.scala:245)
at org.apache.spark.sql.redis.RedisSourceRelation.insert(RedisSourceRelation.scala:121)
at org.apache.spark.sql.redis.DefaultSource.createRelation(DefaultSource.scala:30)
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)