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

在consistency LOCAL\u ONE的简单写查询期间Cassandra超时

蓝逸仙
2023-03-14

我正在spark项目中使用spark sql 3.0.2和spark-cassandra-connector_2.12:3.1.0以及java8。

在写卡桑德拉表格时,我面临以下错误

最新的异常是在一致性LOCAL_ONE的简单写入查询期间发生Cassandra超时(需要1个副本,但只有0个副本确认了写入)

请检查执行程序日志以获取更多异常和信息table_cassandraAsyncStatementWriter.$anonfun$close2美元(TableWorg.apache.spark.scheduler.)在scala. Oask.run(Oask.scala:127)在org.apache.spark.executor.AsyncStatementWriter.close(TableWriter.scala:277)在com.datastax.spark.connector.datasource.CassandraDriverDataWriter.commit(CasssandraDriverDataWriterFactory.scala:46)在org.apache.spark.sql.execution.datasources.v2. DataWritingSparkTask$.$anonfun$run7美元(WriteToDataSourceV2Exec.scala:450)在org.apache.spark.util.Utils$. trySusSafeFinallyAndFailureCallback(Utils.scala:1411)在org.apache.spark.sql.execution.datasources.v2. DataWritingSparkTask$. run(WriteToDataSourceV2Exec.scala:477)在org.apache.spark.sql.execution.datasources.v2. V2TableWriteExec.$anonfun$WriteSusV22美元(WriteToDataSourceV2Exec.scala:385)在org.apache.spark.scheduler.ResultTask.run任务(ResultTcom.datastax.spark.connector.writer.)在riter.scala:282Tption.map(Tption.scala:230)在com.datastax.spark.connector.writer.Execitor$TaskRunner.$anon

我正在使用以下配置

concurrentWrites: 2056 #1024 #64
outputBatchSizeBytes: 2048
outputBatchGroupingKey: partition
outputConsistencyLevel: LOCAL_ONE
outputBatchGroupingBufferSize: 3000
outputThroughput_mb_per_sec: 1024 #256
connectionKeep_alive_ms: 30000
readTimeout_ms: 600000
ignoreNulls: true
readConsistencyLevel: LOCAL_ONE

共有1个答案

滕项明
2023-03-14

这通常是因为Spark Cassandra Connector试图尽可能快地写入数据,并且通常会使单个Cassandra节点过载,因此它们变得不响应(可能是因为JavaGC、压缩等)。

您可以调整写入配置参数,如递减spark.cassandra.output.concurrent.writesspark.cassandra.output.throughputMBPerSec等,但通常可以通过不使用LOCAL_ONE一致性级别(spark.cassandra.output.consistency.level),而是TWOLOCAL_QUORUM来修复它。

您的配置基本上被推到了极限

 类似资料:
  • 我有cassandra单片应用程序,我想写在高速率从队列中读取一些有效载荷。Cassandra集群有3个节点。当我开始并行处理大量消息(通过生成线程)时,我得到以下异常 我将CQLsession创建为bean 我将此CqlSession注入到映射器和其他类中以运行查询 在我的datastax驱动程序中,我给了3个节点的ip作为联系点,我是否需要在CQLsession创建/或我的cassandra节

  • 有人知道我做错了什么吗?

  • 我正在学习Cassandra,并有一个关于分区/集群键的问题。 我有一个表,存储数据的股份,如行业的分支,最近6/12个月的业绩,名称等。 该表如下所示: 多谢了,伙计们

  • 我让cassandra在3个节点上运行,其中一致性为1。Nodetool修复也在服务器上调度。

  • 我想查询cassandra timestamp列,例如this hour、last hour、beather。 我在mysql中执行了与昨天数据相同的查询

  • 使用Cassandra 2.28,Drive 3,Sparks2。我在Cassandra中有一个timestamp列,我只需要按日期部分查询它。如果我按日期查询:<代码>。其中(“交易日期=?”,“2012-01-21”:它不会带来任何结果。如果我包括时间部分,它会显示无效日期。我的数据(如我在cqlsh中所读)是:2012-01-21 08:01:00 0000 参数:“2012-01-21”