是否可以在Scala中连接列表,类似于使用Spark或Pandas Dataframe 所做的事情。比如说
val findMatch(hosts:List[Person], guests: List[Person]):List[(Person, Person)] = ??? \\ project, filter and join
目的是在SQL行上使用SELECT、JOIN、WHERE和其他动词指定Scala中合并集合的逻辑。
如果我的理解是正确的,人们可以使用Spark,但它对于在线应用程序来说太慢了。但更重要的是,通过在列表上进行连接,逻辑变成了域级别的规范。
1条答案
按热度按时间whlutmcx1#
简短的回答是你没有这样的东西。你可以生成一个笛卡尔积,并根据某些条件过滤掉你不需要的东西
它可以在收集量很小的情况下工作。该操作的复杂度是
O(n * m)
,其中m
是第一集合的大小,m
是第二集合的大小。你可以尝试使用
foldLeft
和一些使用字典的累加器,这样也许你可以减少时间复杂度,增加空间复杂度。也许可以尝试一些树木的东西,在那里你必须根据你的需要考虑权衡。我不认为你可以用简单的集合轻松地完成一个sql连接。这就是数据库和像Spark或Pandas这样的工具存在的原因