Кэширование данных в Spark не оказывает никакого влияния на последующие действия - PullRequest
0 голосов
/ 08 сентября 2018

Когда я использую Spark DataFrame для выполнения Action. После кэширования DataFrame , время, необходимое для выполнения действия, а во второй раз действие практически одинаково. Мои коды ниже

logger.info("start to consuming result count")
logger.info(s"consuming ${result.count} output records")
logger.info("starting go to MysqlSink")
logger.info(s"consuming ${result.count} output records")
logger.info("starting go to MysqlSink")

А консольный журнал ниже

18/09/08 14:15:17 INFO MySQLRiskScenarioRunner: start to consuming result count
18/09/08 14:15:49 INFO MySQLRiskScenarioRunner: consuming 5 output records
18/09/08 14:15:49 INFO MySQLRiskScenarioRunner: starting go to MysqlSink
18/09/08 14:16:22 INFO MySQLRiskScenarioRunner: consuming 5 output records
18/09/08 14:16:22 INFO MySQLRiskScenarioRunner: starting go to MysqlSink

Итак, первый раз - 32 секунды, а второй - 33 секунды. Кадр данных должен быть пересчитан с использованием DAG cache Кэш недействителен или не активен. Кто-нибудь может решить мои сомнения?

Большое спасибо.

1 Ответ

0 голосов
/ 08 сентября 2018

Так как вы не дали код перед строками журнала, я просто предположу, что не использовал ссылку на кеш. Должно быть что-то вроде

val dataToCache = ???
val cachedData = dataToCache.cache

Используя ссылку cachedData,

logger.info("start to consuming result count")
logger.info(s"consuming ${cachedData.count} output records")
logger.info("starting go to MysqlSink")
logger.info(s"consuming ${cachedData.count} output records")
logger.info("starting go to MysqlSink")

Надеюсь, это поможет.

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