首页 文章

将大型Spark数据帧写入Cassandra - 性能调优

提问于
浏览
1

我正在使用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 回答

  • 1

    您可以参考此blog进行Spark-Cassandra连接器调整 . 您将了解可以预期的性能数据 . 此外,您可以尝试另一个开源产品SnappyData,这是Spark数据库,它将为您提供非常高的性能 .

相关问题