我听起来很天真地问这个问题,但这是我最近在项目中遇到的一个问题。需要对此有一些更好的理解。
df.persist(StorageLevel.MEMORY_AND_DISK)
每当我们在HBase读取中使用此类持久化时-对于其他后续流作业批次,都会一次又一次返回相同的数据,但是每次运行批次时都会更新HBase。
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)
的原因是为了确保内存中的存储空间不会满,并且在执行特定的流期间,我们不会最终再次进行所有的转换。
火花版本-1.6.3 HBase版本-1.1.2.2.6.4.42-1
有人可以向我解释一下并帮助我更好地理解吗?