0

我在 NiFi 中使用 QueryCassandra 处理器从 Cassandra 获取数据,但我的查询出现超时异常。我想在从处理器运行 CQL 查询时增加请求超时。有没有办法做到这一点,或者我将不得不编写一个自定义处理器?

4

2 回答 2

3

很可能您遇到了异常,因为您正在对非分区键执行查询 - 在这种情况下,查询被分发到所有节点,并且需要遍历所有可用数据,如果您有这将非常慢大数据集。

在 Cassandra 中,只有在(至少)分区键上执行查询时,查询才会很快。如果您需要搜索非分区列,那么您需要重新建模您的表以匹配您的查询。我建议参加DataStax Academy的 DS220 课程,以更好地了解 Cassandra 的工作原理。

于 2019-07-19T10:32:14.583 回答
0

正如@Alex ott 所说,不建议查询非分区键。如果您仍然想这样做并增加查询的超时时间,只需将属性Max Wait Time设置为您想要的任何超时时间。

编辑:

tl;dr:Apache 的超时包装器并没有真正让您使用超时选项。

既然您提到这是一个 DataStax 异常而不是java.util.concurrent.TimeoutException,我可以告诉您,我已经查看了QueryCassandra处理器的源代码,看起来 Apache 只是用 a 包装了查询函数Future来实现超时,而不是使用 DataStax 的内置超时选项。这会导致 DataStax 驱动程序默认的不可更改超时。它应该作为一个错误报告给 Apache。

于 2019-07-21T03:42:42.323 回答