【发布时间】:2020-11-09 21:10:30
【问题描述】:
我有一个 Azure 系统,分为三个部分:
- 我有一些 csv 文件的 Azure 数据湖存储。
- Azure Databricks 我需要进行一些处理 - 正是将该 csv 文件转换为 Redis 哈希格式。
- Azure Redis 缓存我应该将转换后的数据放在哪里。
在 databricks 文件系统中挂载存储后,需要处理一些数据。 如何将位于 databricks 文件系统中的 csv 数据转换为 redisHash 格式并正确地放入 Redis? 具体来说,我不确定如何通过下面的代码进行正确的映射。或者也许有一些我找不到的额外转移到 SQL 表的方法。
这是我在 scala 上编写的代码示例:
import com.redislabs.provider.redis._
val redisServerDnsAddress = "HOST"
val redisPortNumber = 6379
val redisPassword = "Password"
val redisConfig = new RedisConfig(new RedisEndpoint(redisServerDnsAddress, redisPortNumber, redisPassword))
val data = spark.read.format("com.databricks.spark.csv").option("header", "true").option("inferSchema", "true").load("/mnt/staging/data/file.csv")
// What is the right way of mapping?
val ds = table("data").select("Prop1", "Prop2", "Prop3", "Prop4", "Prop5" ).distinct.na.drop().map{x =>
(x.getString(0), x.getString(1), x.getString(2), x.getString(3), x.getString(4))
}
sc.toRedisHASH(ds, "data")
错误:
error: type mismatch;
found : org.apache.spark.sql.Dataset[(String, String)]
required: org.apache.spark.rdd.RDD[(String, String)]
sc.toRedisHASH(ds, "data")
如果我这样写最后一串代码:
sc.toRedisHASH(ds.rdd, "data")
错误:
org.apache.spark.sql.AnalysisException: Table or view not found: data;
【问题讨论】:
-
当您尝试查询表或视图时会发生该错误。您已经从 csv 构建了数据框,根据 REDIS 连接器文档将其转换为 RDD。
标签: scala apache-spark redis databricks azure-databricks