Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark Cassandra性能问题_Apache Spark_Cassandra_Spark Cassandra Connector - Fatal编程技术网

Apache spark Spark Cassandra性能问题

Apache spark Spark Cassandra性能问题,apache-spark,cassandra,spark-cassandra-connector,Apache Spark,Cassandra,Spark Cassandra Connector,我是Spark和Cassandra的新手。我面临一个主要的性能问题。我在Spark中每隔5秒从Kafka流式传输数据,然后使用JRI对R语言中的数据执行分析,最后将数据保存到Cassandra各自的列族中。将数据保存到Cassandra的持续时间(以毫秒为单位)随着输入请求的数量(每个请求为200KB)迅速增加 火花代码: sessionData.foreachRDD(new Function<JavaRDD<NormalizedData>, Void>() {

我是Spark和Cassandra的新手。我面临一个主要的性能问题。我在Spark中每隔5秒从Kafka流式传输数据,然后使用JRI对R语言中的数据执行分析,最后将数据保存到Cassandra各自的列族中。将数据保存到Cassandra的持续时间(以毫秒为单位)随着输入请求的数量(每个请求为200KB)迅速增加

火花代码:

 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());}}
sessionData.foreachRDD(新函数(){
公共无效调用(JavaRDD){
System.out.println(“步骤3”+System.currentTimeMillis());
javaFunctions(rdd).writerBuilder(“键空间”,规范化的_数据),mapToRow(NormalizedData.class)).saveToCassandra();
System.out.println(“步骤4”+System.currentTimeMillis());}

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

您可以参考此内容进行Spark-Cassandra连接器调整。您可以将了解您可以期望的性能数字。您还可以尝试另一种开源产品SnappyData,即Spark数据库,它将在您的用例中为您提供非常高的性能。

我还使用Cassandra Spark combination进行实时分析。以下是一些最佳做法:

  • 数据位置-如果是Spark standalone,则使用工作节点运行Cassandra守护进程;如果是Mesos,则使用节点管理器运行Mesos工作进程

  • 增加并行性即创建更多分区/任务

  • 使用Cassandra连接池提高吞吐量
  • 在您的例子中,您正在使用JRI在Java端调用R 因此,使用SparkR将R与Spark集成,而不是直接使用JRI


    spark default.conf:connection.spark.Cassandra.connection.keep_alive_ms 3600000 spark.Cassandra.output.batch.size.rows 2 spark.Cassandra.output.concurrent.writes10 spark.Cassandra。output.batch.size.bytes 2m spark.cassandra.input.split.size_in_mb 1 mb请让我知道