#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)