我在nifi中使用querycassandra处理器从cassandra获取数据,但是我的查询得到timedoutexception。我想在从处理器运行cql查询时增加请求超时。有没有办法做到这一点,否则我将不得不写一个自定义处理器?
t5fffqht1#
正如@alex ott所说,不建议查询非分区密钥。如果仍要这样做并增加查询的超时时间,只需属性 Max Wait Time 你想要什么时间都行。编辑:热释光;dr:apache的timeout Package 器并不真正允许您使用timeout选项。既然你提到这是一个税收例外 java.util.concurrent.TimeoutException ,我可以告诉你我已经调查了 QueryCassandra 处理器的源代码,看起来apache只是用 Future 以实现超时,而不是使用datastax的内置超时选项。这将导致datastax驱动程序默认的不可更改超时。它应该作为一个bug报告给apache。
Max Wait Time
java.util.concurrent.TimeoutException
QueryCassandra
Future
kulphzqa2#
很可能是因为对非分区键执行查询而出现异常—在本例中,查询被分发到所有节点,并且需要遍历所有可用的数据,如果您有大数据集,这将非常慢。在cassandra中,只有在(至少)分区键上执行查询时,查询才会很快。如果需要搜索非分区列,那么需要重新建模表以匹配查询。为了更好地理解Cassandra的工作原理,我建议参加税务学院的ds220课程。
2条答案
按热度按时间t5fffqht1#
正如@alex ott所说,不建议查询非分区密钥。如果仍要这样做并增加查询的超时时间,只需属性
Max Wait Time
你想要什么时间都行。编辑:
热释光;dr:apache的timeout Package 器并不真正允许您使用timeout选项。
既然你提到这是一个税收例外
java.util.concurrent.TimeoutException
,我可以告诉你我已经调查了QueryCassandra
处理器的源代码,看起来apache只是用Future
以实现超时,而不是使用datastax的内置超时选项。这将导致datastax驱动程序默认的不可更改超时。它应该作为一个bug报告给apache。kulphzqa2#
很可能是因为对非分区键执行查询而出现异常—在本例中,查询被分发到所有节点,并且需要遍历所有可用的数据,如果您有大数据集,这将非常慢。
在cassandra中,只有在(至少)分区键上执行查询时,查询才会很快。如果需要搜索非分区列,那么需要重新建模表以匹配查询。为了更好地理解Cassandra的工作原理,我建议参加税务学院的ds220课程。