Как передать фрейм данных, прочитанный из Excel, в другую переменную в spark-scala?

#scala #dataframe #apache-spark #spark-excel

#scala #фрейм данных #apache-spark #spark-excel

Вопрос:

У меня есть фрейм данных var cache :DataFrame = _ . В качестве начального запуска, который я дал, cache = existingDF существующий файл считывается из Excel с использованием crealytics.spark.excel. но при последующем запуске existingDF получит другой обновленный файл Excel, так и должно быть cache = cache.union(existingDF) Но, похоже, я получаю только existingDF внутри кэша. Короче говоря, всякий раз, когда я вызываю cache, кажется, что он читает Excel. Как мне избежать этого? Эта проблема отсутствует при чтении его в формате csv. (Это было там, когда я использовал .persist для чтения csv, но было исправлено, когда я удалил .persist Проще:

 var a = _
while(true){
    val b = spark.read.format("com.crealytics.spark.excel")...
    if (Option(a).isEmpty){
      a = b
    }
    else if a!=b
      a = b.union(a)
}
  

Переменная a всегда обновляется вместе с b, поэтому она никогда не становится отличной от b. Как мне избежать этого?

Комментарии:

1. пожалуйста, опубликуйте исполняемый код в его нынешнем виде, вопрос неясен (особенно заголовок)

2. Как говорит @RaphaelRoth, в вашем вопросе недостаточно информации, чтобы мы могли вам помочь.

3. Надеюсь, это редактирование поможет

4. Вы перебираете список файлов? Я все еще не понимаю, что вы делаете, если вы уточните, я опубликую функциональный ответ (вы почти наверняка не должны использовать var или цикл while)