gpt4 book ai didi

python - Cassandra 无限行响应

转载 作者:行者123 更新时间:2023-12-02 19:15:17 35 4
gpt4 key购买 nike

我正在使用 Cassandra python 驱动程序工作,其中包含一个包含 38500000 行的表。我正在使用我们正在开发的产品对各种数据库进行基准测试。为了对选择进行基准测试,我使用了一个过滤器,它应该返回大约一半的行和 3 个选择列(然后我改变选择列以查看哪个表现最好)。但是,在使用 Cassandra 时,我每次查询只能得到 57016 个结果(一定是上限)。我试过使用 SimpleStatement 并设置 fetch_size = 38500000但这没有用。我想知道是否应该更改某些参数,因为除了 Cassandra 如何分解超出 fetch_size 的页面之外,我在文档中找不到任何内容。 .

[编辑]

要添加查询返回的更多信息:

cassandra.ReadFailure: Error from server: code=1300 [Replica(s) failed to execute read] message="Operation failed - received 0 responses and 1 failures" info={'consistency': 'LOCAL_ONE', 'required_responses': 1, 'received_responses': 0, 'failures': 1}在我使用 session.default_fetch_size = None 之后.然后在将墓碑增加到tombstone_failure_threshold: 10000000之后并让gc_grace_seconds = 0我仍然遇到同样的错误。我还进入了 Cluster.py 并设置了 _default_timeout = 1000但这并没有导致任何结果。

[编辑 2]通过调试控制台,错误是: <SELECT * FROM mydb.facttable WHERE int64 > 0 LIMIT 38500000>, total time 5007 msec, timeout 5000 msec ,那么我又在哪里可以修改超时 5000 毫秒参数呢?

最佳答案

你好。

好消息是我认为我可以解释您的情况和问题,但坏消息是我认为没有简单的解决方法。

给你一个简短的答案和解决方案:
读取失败是因为 Cassandra 有适当的保护措施来防止“故障”或“恶意”查询损害整个集群的性能。由于这个原因,默认为 5000ms 的读取超时(如您在 EDIT2 中发现的那样)。如果您需要增加该值,则需要修改 cassandra.yaml 中的 read_request_timeout_in_ms

但这不是真正的解决方案。

现在,长话短说:
据我了解,您的查询目标是 3800 万行,您希望 Cassandra 过滤这些行,然后返回大约 1900 万行。我可以在具有精心设计的表格和大量微调的生产硬件上看到这一值(value)。鉴于 EDIT1 中的信息,您似乎正在使用单节点集群,所以我想这是一个小型开发节点,甚至可能托管在您的笔记本电脑/个人电脑上。虽然共享表架构和查询可以提供更多信息并带来更多建议,但总体而言,问题仍然是您试图在明显动力不足的集群(实际上是节点)上运行任务。
根据您的数据,该节点在超时之前每秒能够处理超过 20k 行(并返回 10k)。根据我的经验,这似乎与低资源开发节点一致。由此推断,您的节点将花费大约半小时来处理 38M 条记录,假设它有足够的内存来执行此操作并且没有其他配置会造成问题(如果我没有弄乱计算)。这对于查询来说是很长的时间,即使对于管理查询也是如此。当尝试处理如此多的行时,您不仅应该尝试使用成比例的 HW 来运行查询,还应该:

  1. 避免全面扫描(您应该始终尝试命中单个分区,如果不是这种情况,您可能应该重新考虑数据库模型);
  2. 大多数分区应该小于 10MB,所有分区应该小于 100MB;
  3. 分区虽然硬上限为 20 亿个单元格((行数)*(每行平均单元格数)),但通常应保持在 10 万个单元格以下。

鉴于普遍接受的 3 个“最佳实践”以及您提供的数据,我倾向于认为您没有实现至少 3 个中的两个。再加上动力不足的硬件导致缺乏一个简单的解决方案(比如只是增加超时值)。
我真正解决问题的建议是:

  • 如果您这样做只是为了测试您的代码或不同的方法,那么与您的生产服务器相比,使用开发“服务器”功能的一定比例的数据。您仍然应该确保您正在使用的模型在生产环境中有效运行,因为大量的所需行让我认为数据库模型可能存在问题。
  • 打开另一个问题,提供有关您的情况、当前架构和期望结果的信息,您可能会获得有关为您的用例建模的帮助。虽然 Cassandra 在使用得当时非常强大,但在使用不当时可能效率极低。

希望对您有所帮助,
干杯。

关于python - Cassandra 无限行响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63800192/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com