首页 文章

Spark Cassandra表演问题

提问于
浏览
0

我是Spark和Cassandra的新学习者 . 我正面临一个重大的性能问题 . 我在Spark中每5秒从Kafka传输数据,然后使用JRI对R语言中的数据进行分析,最后将数据保存到Cassandra各自的列族中 . 将数据保存到Cassandra的持续时间(以毫秒为单位)随着输入请求的数量而迅速增加[每个请求为200KB] .

Spark Performance

火花代码:

sessionData.foreachRDD(new Function<JavaRDD<NormalizedData>, Void>() {
    public Void call(JavaRDD<NormalizedData> rdd)     {
System.out.println("step-3 " + System.currentTimeMillis());
javaFunctions(rdd).writerBuilder("keyspace",normalized_data",mapToRow(NormalizedData.class)).saveToCassandra();
System.out.println("step-4 " + System.currentTimeMillis());}}

3 回答

  • 0

    通过在同一台服务器上使用Spark和Cassandra,我能够提高性能 . 这种延迟是因为Spark和Cassandra虽然位于AWS上的同一区域,但却位于不同的服务器上 . 网络延迟是影响数据位置的主要原因 . 谢谢 .

  • 0

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

  • 0

    我也使用Cassandra Spark组合来进行实时分析 . 以下是一些最佳实践:

    • Data Locality - 在Spark独立的情况下运行带有Worker节点的Cassandra守护进程或在Yarn的情况下运行节点管理器],Mesos的Mesos worker

    • Increase the parallelism 即创建更多分区/任务

    • 使用Cassandra连接池来提高吞吐量

    在您的情况下,您正在使用JRI在Java中调用R.这有点慢和性能开销 . 因此,使用SparkR直接将R与Spark集成而不是JRI .

相关问题