Может ли count () вызываться дважды в Spark? - PullRequest
0 голосов
/ 12 июня 2019

Я использую структурированные потоковые записи загрузки из Redis, код ниже

val image = spark.readStream.format("redis").schema(...).load()
val q = image.writeStream.foreachBatch { 
  (batchDF: DataFrame, batchId: Long) => {
    logger.info(batchDF.count()) // INFO: 4 (or other number)
    logger.info(batchDF.count()) // INFO: 0
    logger.info(batchDF.count()) // INFO: 0
  }
}.start()
q.awaitTermination()

Как показано выше, первый logger.info, кажется, получает правильный счет batchDF, но из второго он0.

Что важнее, batchDF пошел после первого count()?

1 Ответ

1 голос
/ 12 июня 2019

Итак, после того как count () вызывается один раз, RDD все еще там?

- Да, вы можете запустить несколько действий через СДР. Выходит до заживо.

Для проверки счетчик равен нулю или нет. Вы можете использовать функцию rdd.isEmpty, как показано ниже:

if(rdd.isEmpty)
{// means count is zero
} else {//means not zero}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...