cassandra CQL 在 where 不使用 UDF

Posted

技术标签:

【中文标题】cassandra CQL 在 where 不使用 UDF【英文标题】:cassandra CQL not use UDF in where 【发布时间】:2018-07-09 17:43:37 【问题描述】:

为什么Where中不能使用UDF?

select * from user_by_location
where distanceOf(latlng.lat,latlng.lng,42.15444,34.58511) > 1;

SyntaxException:第 1:47 行在输入 '(' 处没有可行的替代方案 (select * from user_by_location where [distanceOf](...)

【问题讨论】:

你的UDF定义、表结构和cassandra版本是什么? 【参考方案1】:

您不能在 where 子句中使用 UDF(过滤查询)。

如果您想关注它,允许这样做的功能请求是 here。总而言之,它需要重新排列代码的一些主要部分,并可能导致性能下降和/或数据陈旧。

(顺便说一句,您似乎正在尝试使用地理空间数据,因此您可能会发现了解如何使用 Spark 或 DSE 处理它会有所帮助。)

【讨论】:

以上是关于cassandra CQL 在 where 不使用 UDF的主要内容,如果未能解决你的问题,请参考以下文章

如果不鼓励在 cassandra 1.2/Cql3 中使用动态列,那么它在功能上比 Mysql 好多少?

Cassandra (Datastax) CQL 忽略 TEXT 列的大小写

使用 CQL3 在 Cassandra 中进行数据版本控制

Cassandra CQL - NoSQL 或 SQL

使用 Cassandra (CQL 3) 实现类似表的堆栈

Cassandra Cql 范围选择