我正在使用Spark 2.1.0 / Cassandra 3.10集群(4台机器* 12核* 256 RAM * 2 SSD),并且使用spark-cassandra为Cassandra写一个特定的大数据帧的性能已经有一段时间了-connector 2.0.1 .
这是我的表的架构
CREATE TABLE sample_table (
hash blob,
field1 int,
field2 int,
field3 boolean,
field4 bigint,
field5 bigint,
field6 list<FROZEN<some_type>>,
field7 list<FROZEN<some_other_type>>,
PRIMARY KEY (hash)
);
用作主键的哈希值为256位;列表字段包含一些结构化类型的最多1MB数据 . 总的来说,我需要写几亿行 .
目前我正在使用以下写入方法:
def storeDf(df: Dataset[Row]) = {
df.write
.cassandraFormat(sample_table, sample_keyspace)
.options(
WriteConf.ConsistencyLevelParam.option(ConsistencyLevel.ANY)
)
.save
}
...并且Spark使用48个并行任务写入数据帧,每个任务写入约 . 1.2小时95MB,这当然不是我想要的 .
我很欣赏有关如何调整写入性能的建议和/或可能在这样的设置中修改我的模式 . 通过散列和分区内的重新分区是否有意义?
谢谢!
1 回答
您可以参考此blog进行Spark-Cassandra连接器调整 . 您将了解可以预期的性能数据 . 此外,您可以尝试另一个开源产品SnappyData,这是Spark数据库,它将为您提供非常高的性能 .