当我尝试运行以下CQL时,我发现canssandra触发器不是按一条记录而是按一批运行的。
COPY XXX_Table FROM 'xxxx.csv' WITH MAXBATCHSIZE=10
例如,我有20万个recoreds csv文件,运行了上述CQL之后,cassandra中有2000,000条记录,但是触发器仅运行了20万次。 为什么?
答案 0 :(得分:0)
这是因为CSV文件中的数据具有相同的分区键。
导入数据时,父进程从输入文件中读取带有 CHUNKSIZE 行的数据块,并将每个数据块发送到工作进程。然后,每个工作进程都会分析块中具有公共分区键的行。如果找到至少2个具有相同分区键的行,则将它们分批发送并发送到拥有该分区的副本。您可以使用新选项MINBATCHSIZE控制最小行数,但建议将其设置为2。对于不共享任何公共分区键的行,它们将与其他分区键属于同一行的行进行批处理复制品。然后将这些行拆分为大小为MAXBATCHSIZE的批次,当前为20行。这些批处理将发送到分区所在的副本。在这两种情况下,批次的类型均为UNLOGGED。
基于: link