Мне может показаться наивным задавать этот вопрос, но это проблема, с которой я недавно столкнулся в своем проекте.Нужно немного лучше разобраться в этом.
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
Может кто-нибудь объяснить мне это и помочь мне лучше понять