我是Spark SQL上的Dataframe API的粉丝,但有些东西告诉我这个连接推得太远了。我已经有32个核心可用,但是只有一个任务处于活动状态,这个工作暂停,可能是一个执行器的一个核心。连接中的两个表都被缓存,一个是9 GB,2 GB。
val join = sc_meta
.join(sd_coverage,
(sc_meta("xocs_issn") === sd_coverage("issn") or
sc_meta("print_issn") === sd_coverage("issn") or
sc_meta("electronic_issn") === sd_coverage("issn") or
sc_meta("other_issn") === sd_coverage("issn")) and
sc_meta("volume") === sd_coverage("volume") and
sc_meta("issue") === sd_coverage("issue"),
"leftsemi")
join.count
请注意'或'在那里表达。在没有or子句的情况下运行连接在十秒内完成。
重写此查询或采取不同策略的想法?