不支持的文字类型类 scala.collection.immutable.HashSet$HashTrieSet

Cau*_*der 3 scala apache-spark apache-spark-sql

我有一个包含 ID 列表的数据框。我想将其过滤为一组 ID,我使用 .filter() 来做到这一点。

我遇到了这个错误。

java.lang.RuntimeException: Unsupported literal type class scala.collection.immutable.HashSet$HashTrieSet
Run Code Online (Sandbox Code Playgroud)

我的代码很简单。

val setofID = Set("112", "113", "114", "121", "118", "120")

val my_dfFiltered = my_df.filter($"id".isin(setofID)).persist
Run Code Online (Sandbox Code Playgroud)

Rap*_*oth 6

Set不使用isin,使用 aSeq并使用 varags 之类的

val setofID = Set("112", "113", "114", "121", "118", "120").toSeq

val my_dfFiltered = my_df.filter($"id".isin(setofID:_*)).persist
Run Code Online (Sandbox Code Playgroud)

或使用isInCollection(自 Spark 2.4 起)接受Iterable,这应该直接与Set

val my_dfFiltered = my_df.filter($"id".isInCollection(setofID)).persist
Run Code Online (Sandbox Code Playgroud)