【发布时间】:2018-04-16 21:12:37
【问题描述】:
我有一个包含用户 ID 和操作类型的操作数组
+-------+-------+
|user_id| type|
+-------+-------+
| 11| SEARCH|
+-------+-------+
| 11| DETAIL|
+-------+-------+
| 12| SEARCH|
+-------+-------+
我想过滤属于至少有一个搜索操作的用户的操作。
所以我创建了一个具有搜索操作的用户 ID 的布隆过滤器。
然后我尝试根据布隆过滤器的用户状态过滤所有操作
val df = spark.read...
val searchers = df.filter($"type" === "SEARCH").select("user_id").distinct.as[String].collect
val bloomFilter = BloomFilter.create(100)
searchers.foreach(bloomFilter.putString(_))
df.filter(bloomFilter.mightContainString($"user_id"))
但是代码给出了异常
type mismatch;
found : org.apache.spark.sql.ColumnName
required: String
请告诉我如何将列值传递给 BloomFilter.mightContainString 方法?
【问题讨论】:
标签: scala apache-spark bloom-filter