Присоединяйтесь к нескольким фреймам данных в scala - PullRequest
0 голосов
/ 05 августа 2020

У меня две переменные. Один - это Dataframe, а другой - List [Dataframe]. Я использую sh, чтобы выполнить их соединение. На данный момент я использую следующий подход:

def joinDfList(SingleDataFrame: DataFrame, DataFrameList: List[DataFrame], groupByCols: List[String]): DataFrame = {

    var joinedDf = SingleDataFrame
    DataFrameList.foreach(
      Df => {
        joinedDf = joinedDf.join(Df, groupByCols, "left_outer")
      }
    )
    joinedDf.na.fill(0.0)
}

Есть ли подход, при котором мы можем пропустить использование «var» и вместо «foreach» использовать «foldleft»?

1 Ответ

1 голос
/ 06 августа 2020

Вы можете просто написать его без переменных, используя foldLeft:

def joinDfList(singleDataFrame: DataFrame, dataFrameList: List[DataFrame], groupByCols: List[String]): DataFrame = 
  dataFrameList.foldLeft(singleDataFrame)(
    (dfAcc, nextDF) => dfAcc.join(nextDF, groupByCols, "left_outer")
  ).na.fill(0.0)

в этом коде dfAcc всегда будет соединяться с новым DataFrame из dataFrameList, и в конце вы получите one DataFrame

Важно! будьте осторожны, использование слишком большого количества объединений в одном задании может стать причиной снижения производительности.

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