从 Cassandra 列族中的冻结集列中获取不同的字段值

Posted

技术标签:

【中文标题】从 Cassandra 列族中的冻结集列中获取不同的字段值【英文标题】:Fetch distinct field values from frozen set column in Cassandra columnfamily 【发布时间】:2020-07-10 00:50:04 【问题描述】:

您好,请帮我获取以下要求的 cql 查询 - 列族包含列:deptid (datatype:uuid emplList (datatype: set frozen(employee)) 我如何从员工对象中获取所有不同的员工姓名,并将其存储为 emplList 的列值。

【问题讨论】:

请展示一些您尝试过的代码,人们将能够帮助您 【参考方案1】:

这样的查询无法用纯 CQL 表达——Cassandra 被优化为通过主键读取数据,聚合操作非常有限。您有 2 个选择:

    通过您的程序从表中读取所有数据,并提取不同的值 将 Spark 与 Spark Cassandra Connector 结合使用 - 它会从表中读取所有数据,但您将拥有更高级别的抽象来处理数据,并且它可以对您的表执行更优化的扫描。

【讨论】:

谢谢 Alex.. 意思是,我可以使用 datastax Java 驱动程序将所有结果作为 deptid、empllist 集...。然后只需编写一个程序来从 emplList 对象中获取不同的值。请建议 我会警告说,对 Cassandra 表的有效扫描并不是那么简单的任务,所以最好坚持使用 Spark 好的,亚历克斯。将与火花一起去

以上是关于从 Cassandra 列族中的冻结集列中获取不同的字段值的主要内容,如果未能解决你的问题,请参考以下文章

如何使值在 cassandra 中独一无二

Cassandra中的行排序

使用 JMX 的 Cassandra 列族列表

Cassandra 列族适用于多个用例好/坏

从 java.util.Date 获取年份

Cassandra 读取间歇性失败