Почему persist (StorageLevel.MEMORY_AND_DISK) дает результаты, отличные от cache () с HBase? - PullRequest
0 голосов
/ 27 августа 2018

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

df.persist(StorageLevel.MEMORY_AND_DISK)

Всякий раз, когда мы используем такое постоянство при чтении HBase - одни и те же данные возвращаются снова и снова для других последующих пакетов потокового задания, но HBase обновляется для каждого пакетаrun.

Код чтения HBase:

val df = sqlContext.read.options(Map(HBaseTableCatalog.tableCatalog -> schema)).format(dbSetup.dbClass).load().persist(StorageLevel.MEMORY_AND_DISK)

Я заменил persist(StorageLevel.MEMORY_AND_DISK) на cache(), и он возвращал обновленные записи из таблицы HBase, как и ожидалось.

Причина, по которой мы попытались использовать persist(StorageLevel.MEMORY_AND_DISK), заключается в том, чтобы гарантировать, что хранилище в памяти не переполняется, и мы не заканчиваем тем, что выполняем все преобразования заново во время выполнения определенного потока.

Версия Spark - 1.6.3 Версия HBase - 1.1.2.2.6.4.42-1

Может кто-нибудь объяснить мне это и помочь мне лучше понять

...