Когда-то я использовал RDD с Spark
для создания компаний POJO, владеющих их учреждениями. Но я решил заменить RDD на наборы данных.
У меня есть Dataset<Row> dsCompany
, который может быть закодирован в Company
POJO при необходимости, с именем Entreprise
в моем примере программы ниже.
У меня также есть Dataset<Row> dsEtablishment
, который также может быть закодирован в Etablishment
POJO, в моем примере с именем Etablissement
.
Все отлично работает!
Dataset<Row> dsEnterprises = createDsRowEntreprises(anneeCOG, annee, actifsSeulement);
Dataset<Row> dsEtablissements = createDsRowEtablissements(anneeCOG, annee, actifsSeulement, communesValides);
Dataset<Row> dsJoin = dsEnterprises
.join(dsEtablissements, dsEnterprises.col("siren").equalTo(dsEtablissements.col("siren")), "inner")
.drop(dsEnterprises.col("Siren"))
.drop(dsEnterprises.col("ActivitePrincipale"))
.drop(dsEnterprises.col("DateDebutHistorisation"))
.drop(dsEnterprises.col("DateDernierTraitement"))
.drop(dsEnterprises.col("NombrePeriodes"))
.drop(dsEnterprises.col("NomenclatureActivitePrincipale"))
.drop(dsEnterprises.col("TrancheEffectifSalarie"))
.drop(dsEnterprises.col("AnneeValiditeEffectifSalarie"));
Я добьюсь успеха, если я попрошу один вид этих POJO внутри:
Dataset<Entreprise> dsC = dsJoin.as(Encoders.bean(Entreprise.class));
Dataset<Etablissement> dsE = dsJoin.as(Encoders.bean(Etablissement.class));
и collectAsList()
тоже должны работать.
Но как я могу получить два POJO, закодированные из строк моего Dataset<Row> dsJoin
одновременно?
Потому что мне нужно создать объекты Companies , собрав все имеющиеся у них документы. Я хотел бы получить один экземпляр Company
, связанный с одним из Etablishment
для каждой строки, в которой есть мой dsJoin
. Как это можно сделать?