【发布时间】:2019-05-02 21:59:14
【问题描述】:
我在使用 scala API 的 spark 中遇到了 mapType 的问题 对于每个会话,我们都会发送一个地图,您可以在其中找到用户访问的类别与每个类别中的事件数量相关联
[ home & personal items > interior -> 1, vehicles > cars -> 1]
并非所有用户访问的类别数量都相同,因此地图的大小会根据 user_id 发生变化
我需要计算按类别分组的会话数 为了做到这一点,我需要遍历地图,而它不是空的 我之前尝试过的事情
while (size(col("categoriesRaw")) !== 0) {
df.select(
explode(col("categoriesRaw"))
)
.select(
col("key").alias("categ"),
col("value").alias("number_of_events")
)
}
但我遇到了一些错误,例如:
type mismatch;
found : org.apache.spark.sql.Column
required: Booleansbt
【问题讨论】:
-
你能分享示例数据框吗?
-
@Kaushal 类似:StructField("sessionId", StringType, true), StructField("categoriesRaw", MapType(StringType, IntegerType, true), true),
-
你能分享一个示例数据字段吗?
-
@YayatiSule 类似于 [ 家居和个人物品 > 内饰 -> 1,车辆 > 汽车 -> 1] [ 车辆 > 汽车 -> 3]
-
您的原始数据是 JSON 格式吗?像这里 [{"home_and_personal":{"interior":1},"vehicles":{"cars":1}}]
标签: scala apache-spark dataframe