Два набора данных <Row>dsA и dsB кодируются в объектах A и B.Я присоединяюсь к ним.Как я могу собрать два объединенных объекта, A и B одновременно? - PullRequest
0 голосов
/ 08 июля 2019

Когда-то я использовал 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. Как это можно сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...