使用 Spark 执行“WHERE IN”子句,如何仅重新训练第一个数据集的列?
Posted
技术标签:
【中文标题】使用 Spark 执行“WHERE IN”子句,如何仅重新训练第一个数据集的列?【英文标题】:Doing a "WHERE IN" clause with Spark, how may I retrain only the columns of my first dataset? 【发布时间】:2020-10-11 19:04:02 【问题描述】:我做事正确吗?
我只想保留与communes
中提到的城市相关的mobilite
数据。
我用join
模拟WHERE ... IN ...
子句:这是最好的方法吗?
Dataset<Row> mobilite = this.mobiliteDomicileTravailDataset
.dsRowFluxDomicileTravailPlusDe15ansAvecEmploi(this.session, 2017);
Dataset<Row> communes = communes(2018);
mobilite = mobilite
.join(communes,
communes.col("codeCommune").equalTo(col("code_commune_origine")), "inner")
.selectExpr("mobilite.*");
在join
操作之后获取的mobilite
数据集内部包含communes
列。这是正常的。但他们对我不感兴趣。但是,我写的内容不起作用并导致错误。
如何快速丢弃它们? 实现我想要的最快的代码是什么?
【问题讨论】:
【参考方案1】:使用leftsemi
加入:
mobilite = mobilite
.join(communes,
communes.col("codeCommune").equalTo(col("code_commune_origine")), "leftsemi")
.selectExpr("mobilite.*");
【讨论】:
以上是关于使用 Spark 执行“WHERE IN”子句,如何仅重新训练第一个数据集的列?的主要内容,如果未能解决你的问题,请参考以下文章