cassandra - 如何在 cassandra 中存储 Bert 嵌入
问题描述
我想使用 Cassandra 作为特征存储来存储预先计算的 Bert 嵌入,每一行将包含大约 800 个整数(例如-0.18294132
)我应该将所有 800 个整数存储在一个大字符串列还是 800 个单独的列中?
简单的读取模式,在读取时我们希望读取一行中的每个值。不确定哪个对序列化速度更好。
解决方案
将所有内容作为单独的列将非常低效 - 每个值都有自己的元数据(例如写入时间),这将增加大量开销(每个值至少 8 个字节)。将数据存储为字符串也不是很有效,并且会增加应用程序端的复杂性。
我建议根据您的要求将数据存储为整数/长整数或双精度/浮点数的Fronzen 列表。就像是:
create table ks.bert(
rowid int primary key,
data frozen<list<int>>
);
在这种情况下,整个列表将被有效地序列化为二进制 blob,仅占用一个单元格。
推荐阅读
- mrtk - MRTKv2:如何获得空间感知观察者
- c - 尝试使用 Open Function 调用时出现错误消息
- pascal - 为什么运行代码后会出现语法错误?
- javascript - 无法从txt文件中获取数字总和
- php - parse_str():不推荐在没有结果参数的情况下调用 parse_str()
- flutter - 是否可以使用 Flutter 构建 Apple Watch App?
- c++ - 在类中使用 C++20 中的“使用枚举”可能吗?
- javascript - 在 Chrome 加载时为元素设置动画
- string - 转义序列 \a 做什么以及我应该何时使用它?
- python - NaT 值不会被 pandas 数据框中的 NaN 替换