我们有一个名为cassandra扫描的程序,它使用火花-卡桑德拉连接器在一个非常大的表中列出分区键的所有值。该表大约有1700万Cassandra分区,每个分区平均有200行。包含此表的Cassandra集群在6个节点上运行DSE 5.1.8。包含表的键空间的复制因子为3。
以下是键空间和表的简化定义。
CREATE KEYSPACE myspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'} AND durable_writes = true;
CREATE TABLE myspace.largetable (
id text,
itemOrder text,
...
PRIMARY KEY (id, itemOrder)
) WITH CLUSTERING ORDER BY (itemOrder ASC)cassandra扫描中用于列出分区键的所有值的语句如下:
val res = sc.cassandraTable(keyspace, table).select("id").perPartitionLimit(1).repartition(320)我们使用ApacheSpark2.3.1和火花-cassandra-连接器2.3.2。用于启动cassandra扫描的命令如下所示。
/path/to/spark/spark-2.3.1-bin-hadoop2.7/bin/spark-submit --class "CassandraScan" --jars /path/to/spark-cassandra-connector_2.11-2.3.2.jar --executor-memory 15g --master local[20] cassandra-scan.jar &卡桑德拉扫描正常运行,大约需要19小时。
我们最近建立了一个新的Cassandra集群,同样有6个节点(不同于在第一个集群中使用的节点)。这个集群运行DSE 6.8.16。第一个表中的所有数据都已添加到新集群中的一个表中。
我们将Apache的版本更新为2.4.8,连接器更新为2.4.2。我们用no测试了这个程序。在2000到200 000范围内的星火分区。我们还没能让卡桑德拉扫描正常运行。我们看到以下形式的错误:
java.io.IOException: Exception during execution of SELECT "id" FROM "myspace"."largetable" WHERE token("id") > ? AND token("id") <= ? PER PARTITION LIMIT 1 ALLOW FILTERING: Not enough replicas available for query at consistency LOCAL_ONE (1 required but only 0 alive)有些运行Cassandra扫描会导致一些Cassandra节点与诸如Cassandra日志中的以下消息一起下降。
INFO [CoreThread-22] 2022-04-03 06:26:35,467 InboundHandshakeHandler.java:353 - Failed to properly handshake with peer /xxx.xxx.xxx.xxx:41231. Closing the channel.
java.lang.OutOfMemoryError: Direct buffer memoryWARN [Outbound-/xxx.xxx.xxx.xxx-large-message-writer] 2022-04-01 19:17:58,248 AbstractOutboundMessageHandler.java:80 - LARGE_MESSAGE with id 97 from /xxx.xxx.xxx.xxx to /xxx.xxx.xxx.xxx via (/xxx.xxx.xxx.xxx,/xxx.xxx.xxx.xxx:7000) error...
java.io.IOException: java.lang.RuntimeException: io.netty.channel.unix.Errors$NativeIoException: writeAddress(..) failed: Connection reset by peer任何帮助,使这个工作,是非常感谢。谢谢。
发布于 2022-05-20 16:34:40
我们用DataStax散装装载机来解决这个问题。
dsbulk unload \
--connector.csv.url <path>/<to>/<outputDir> \
-h <host> \
-query "select distinct id from myspace.largetable"Ds散装花了大约3小时才获得1 750万美元的价值。
发布于 2022-04-12 11:45:42
此错误表示群集中至少有一个节点不可用于处理请求:
Not enough replicas available for query at consistency LOCAL_ONE \
(1 required but only 0 alive)您需要检查Cassandra日志,以确定(1)哪些节点没有响应/不可用,以及(2)原因。干杯!
https://stackoverflow.com/questions/71759490
复制相似问题