当前位置: 首页 > 知识库问答 >
问题:

无主机可用异常 在从卡桑德拉读取数据时发现

林龙野
2023-03-14

我正在使用卡桑德拉2.1.5和卡桑德拉爪哇驱动程序2.0.10。当我从卡桑德拉表获取数据时,我面临以下异常。

com . datas tax . driver . core . exceptions . nohostavailableexception:在com . datas tax . driver . core . exceptions . nohostavailableexception . copy(nohostavailableexception . Java:84)上尝试查询的所有主机都失败(尝试:/127 . 0 . 0 . 1:9042(com . datas tax . driver . core . transport exception:[/127 . 0 . 0 . 0 . 1:9042]连接已关闭)

在我的卡桑德拉表中,有50000列和380000行。当我启动这个查询时,我得到了上面的错误。

select * from my key space . product data其中id In (1,...,6000).

我已经使用令牌创建了从Cassandra获取数据的批处理。

共有1个答案

唐阳晖
2023-03-14

试图用一个有50000列的表在380000行上一次测试6000个分区似乎完全是多余的。

多分区选择应该使用异步查询来完成,每个分区使用一个查询。一个表中有50000列看起来像是一个数据建模问题。你的用例是什么?一次获取380000行应该是不必要的(而且会花费很长时间),它看起来像一个分析查询,应该通过Spark来更好地处理。

试图一次获取这么多数据,您很可能会在cassandra节点上获得OOM,这可以解释为什么您会收到“连接已关闭”的消息

我的建议是查看您的模型,并尝试以应有的方式拆分负载(异步查询)并使用正确的分页。如果要一次处理如此多的数据,则必须通过批处理使用 Spark 执行此操作,将结果输出到另一个 cassandra 表中,并通过更小、更快的交互式查询访问该结果表。

 类似资料:
  • 我有这个代码: 我得到以下异常: 所有主机尝试查询失败(已尝试:/127.0.0.1:9042(com.datastax.driver.core.TransportException:[/127.0.0.1:9042]无法连接)),堆栈跟踪:com.datastax.driver.core.exceptions.NoHostAvailableException:所有主机尝试查询失败(已尝试:/12

  • 我使用的是spring数据cassandra,需要使用jpa映射一个字段,在cassandra中,该字段的类型为

  • 我正在经历节点崩溃,system.logfile显示一堆'ReadTimeoutException'达到500毫秒。 卡桑德拉.yaml 文件具有 [read_request_timeout_in_ms: 10000] 的设置 你们能分享一下我如何解决这些超时问题吗?提前感谢! 错误[shared pool-Worker-241]2017-02-01 13:18:27,663 Message.ja

  • 我目前在cassandra中有一个名为macrecord的表,类似于以下内容: 在这种情况下,我想不出其他解决方案,只有在macadd值重复的情况下删除整行,然后插入具有更新时间戳的新行。 是否有更好的解决方案在macadd值重复时更新时间戳,或者在我的原始表中只有macadd是主键的范围内查询时间戳值的替代方法。

  • 我用Spring Data Cassandra 2.2.1开发了一个新的应用程序,想在Cassandra 2.1.9服务器上运行它(旧的,我知道)。但是我们得到了错误 Spring数据卡桑德拉手册声称Spring数据2.2.1至少需要卡桑德拉2.1,所以这应该有效,但它没有。我们包含的唯一特定于卡桑德拉的依赖项是 我怎样才能让这个工作?

  • 操作超时 - 仅收到 0 个响应“,信息:”表示来自服务器的错误消息“,代码:4608,一致性:1,已接收:0,阻止:1,isData 呈现:0,... 我每天尝试在我的cassandra集群上执行SELECT查询时都会遇到几次这样的错误。我们在m1.large aws实例上有一个3节点集群。他们大多数时候都能成功,但我们偶尔会遇到上述错误。我们还没有生产,所以所有的桌子都很小。我们没有超过几千行