Scala 读取未发布的易失性层分区是否是最佳做法?

Scala 读取未发布的易失性层分区是否是最佳做法?,scala,sdk,here-olp,Scala,Sdk,Here Olp,我使用OLP Volatile层作为实时仪表板的后端(平均更新周期约为5秒)。数据按源ID进行分区,并且源ID集随时间变化很大 我知道是发布您的易失性层分区;然而,与上传不同,publish是一项昂贵的操作,我相信它不是设计为每隔几秒钟执行一次的 因此,到目前为止,我一直在做的是在将数据写入图层时跳过publish: val writeEngine= DataEngine().writeEngine(“hrn:of:my:catalog”,新StableBlobIdGenerator(123L)

我使用OLP Volatile层作为实时仪表板的后端(平均更新周期约为5秒)。数据按源ID进行分区,并且源ID集随时间变化很大

我知道是
发布
您的易失性层分区;然而,与上传不同,
publish
是一项昂贵的操作,我相信它不是设计为每隔几秒钟执行一次的

因此,到目前为止,我一直在做的是在将数据写入图层时跳过
publish

val writeEngine=
DataEngine().writeEngine(“hrn:of:my:catalog”,新StableBlobIdGenerator(123L))
写引擎(
新分区(
partition=“source-id-1”,
layer=“我的易失性层”,
data=someData
)
)
并使用与先前相同的
blobIdGenerator
读取数据:

readEngine
.getDataAsBytes(新引用分区)(
版本=123L,
partition=“source-id-1”,
layer=“我的易失性层”,
dataHandle=(新StableBlobIdGenerator(123L)).generateBlobId(NewPartition(
partition=“source-id-1”,
layer=“我的易失性层”,
data=NewPartition.ByteArrayData(Array.emptyByteArray)
))
))

我意识到我将易失性层视为内存中的键值存储,我理解这样我就无法在OLP控制台UI中查看数据;但从编程的角度来看,数据仍然是上传的,并且可读。这是对Volatile API的合法使用吗?

即使不发布元数据,也可以将Volatile层用作键值存储。只要数据句柄是已知的,就可以了。如果需要按时间戳或分区id进行查询(如果数据句柄未知),元数据非常有用


如果您确实选择为您的易失性层发布元数据,则在添加或删除分区时,只需初始化发布并上载元数据将是最有效的,只需不提交发布作业以进行最终确定。

只是好奇:我假设如果您不完成发布作业,在作业完成之前,元数据API调用中的元数据将一直不可用,对吗?@detoo事实上,只要目录有一个版本,任何易失性分区元数据都将在发布仍处于打开状态时可用。有趣的是。。。我去试试。感谢您的澄清:)