【问题标题】:Increase request timeout for CQL from NiFi增加来自 NiFi 的 CQL 的请求超时
【发布时间】:2019-07-19 09:39:50
【问题描述】:

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

【问题讨论】:

    标签: cassandra apache-nifi hortonworks-dataflow


    【解决方案1】:

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

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

    【讨论】:

    • 如果我在增加超时的情况下运行查询,则会在 shell 上运行相同的查询。所以,我想知道我们是否可以通过 NiFi 控制它
    【解决方案2】:

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

    编辑:

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

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

    【讨论】:

    • 我已经将最大等待时间设置为“0”,这意味着没有限制。我还尝试将其增加到 600 秒、900 秒及更多,但错误仍然保持不变。
    • 您能否提取整个错误消息并将其添加到您的问题中?
    • 报错信息为:由于等待服务器响应超时,无法处理会话;处理器以管理方式让步 1 秒:com.datastax.driver.core.exceptions。 OperationTimedOutException:等待服务器响应超时。
    猜你喜欢
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 2013-01-23
    相关资源
    最近更新 更多