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

大批量插入期间Cassandra DataTax驱动程序NoHostAvailableException

茅炯
2023-03-14

我有一个Cassandra的单节点实例。我一直在使用Java中的datastax驱动程序使用批处理语句向其中插入大量数据。

在插入过程中的某个点之后,我会看到一个NoHost可用异常,但是我仍然可以通过cql连接到节点并执行语句。Cassandra 日志警告我,批处理太大,当我将大小降低到建议的水平时,我仍然收到相同的错误,并且 Cassandra 日志文件中似乎没有其他错误。

以前有人遇到过这个错误吗,我觉得卡桑德拉有什么东西。我失踪了。

共有2个答案

冉锋
2023-03-14

Cassandra中的batch关键字对于批量装载大量数据并不是一个性能html" target="_blank">优化。

批处理用于将原子操作组合在一起(如果一个写入失败,它们都会失败),您希望一起发生的操作。批处理保证,如果批处理的单个部分成功,则整个批处理都成功。

分批使用可能不会让你的大量摄入运行得更快

Cassandra使用一种称为批处理日志的机制来确保批处理的原子性。通过指定未记录的批处理,您关闭了此功能,因此批处理不再是原子的,可能会因部分完成而失败。当然,记录批处理并确保它们的原子性会有性能损失,使用未记录的批处理会消除这种损失。

在某些情况下,您可能希望使用未记录日志的批处理来确保属于同一个分区的请求(插入)被一起发送。如果您一起批处理操作,并且它们需要在不同的分区/节点中执行,那么您实际上是在为您的协调者创造更多的工作。参见Ryan博客中的具体例子:

阅读这篇文章

常博裕
2023-03-14

我遇到了与您遇到的问题非常相似的问题,并在这里解决了它:Cassandra集群的插入性能和插入稳定性都很差。

最根本的解决方案是,您只是在重载节点,而且批插入的速度有争议地不比异步插入快。当然,您应该使用一些技术来限制异步插入。此外,确保您的网络能够支持您的插入。我连接到了一个低功率的交换机,当我改变了连接服务器的路线(距离我只有几个房间)时,大约一半的问题消失了。

如果没有帮助,您应该使用多个节点,具体取决于您的插入率。

 类似资料:
  • 我尝试使用scala 2.11.7在mongodb 3.0.7中保存一个文档,然后进行快速访问:http://mongodb.github.io/mongo-scala-driver/1.0/gett-start/quick-tour/,但是我运行了这个示例,没有发生任何事情。不创建数据库、集合和文档。 控制台: 少了什么?

  • 我正在写一个数据挖掘程序,可以批量插入用户数据。 当前SQL只是一个普通的批量插入: 如果发生冲突,如何进行更新?我试过: 但它抛出

  • 我创建了一个向MySql数据库插入数百万个值的程序。我读到过有关批插入的文章,它将优化我的程序并使其更快,但当我尝试这样做时,它以同样的方式工作。我没有将每个值插入数据库,而是每次将500个值保存在一个列表中,然后将它们插入一个大循环中,如下所示: 然后我删除列表中的所有值,并再次开始收集500个值。它不应该工作得更好吗? 我的插入代码是: 我有一些问题: 1。为什么当我批量插入时它不能更快地工作

  • 问题内容: 这是我在阅读有关jpa批量插入的几个主题之后创建的简单示例,我有2个持久对象User和Site。一个用户可以拥有多个站点,因此我们在这里有一对多的关系。假设我要创建用户并将多个站点创建/链接到用户帐户。考虑到我愿意为Site对象使用批量插入,代码如下所示。 但是,当我运行此代码时(我将hibernate方式用作jpa实现提供程序),我看到以下sql输出: 所以,我的意思是“真实的”批量

  • 问题内容: 我需要通过REST API的Batch端点将大量节点及其之间的关系插入到Neo4j中,大约每秒5k记录(仍在增加)。 这将是24x7连续插入。每条记录可能只需要创建一个节点,而其他记录可能需要两个节点并创建一个关系。 是否可以通过更改程序或修改Neo4j的设置来提高插入件的性能? 到目前为止,我的进度: 1.我已经使用Neo4j进行了一段时间的测试,但无法获得所需的性能 测试服务器盒:

  • 我们正在尝试使用DataStax驱动程序将CSV文件中的数据插入Cassandra。有哪些方法可以做到这一点? 我们目前使用运行cqlsh从CSV文件加载。