Apache spark spark datasax cassandra连接器从重型cassandra表读取速度慢
我不熟悉Spark/Spark Cassandra连接器。我们在团队中首次尝试spark,并使用spark cassandra连接器连接到cassandra数据库 我编写了一个查询,它使用了数据库的一个沉重的表,我看到Spark任务直到对该表的查询获取了所有记录才开始 仅从数据库中获取所有记录就需要3个多小时 从我们使用的数据库中获取数据Apache spark spark datasax cassandra连接器从重型cassandra表读取速度慢,apache-spark,spark-streaming,apache-spark-sql,spring-data-cassandra,spark-cassandra-connector,Apache Spark,Spark Streaming,Apache Spark Sql,Spring Data Cassandra,Spark Cassandra Connector,我不熟悉Spark/Spark Cassandra连接器。我们在团队中首次尝试spark,并使用spark cassandra连接器连接到cassandra数据库 我编写了一个查询,它使用了数据库的一个沉重的表,我看到Spark任务直到对该表的查询获取了所有记录才开始 仅从数据库中获取所有记录就需要3个多小时 从我们使用的数据库中获取数据 CassandraJavaUtil.javaFunctions(sparkContextManager.getJavaSparkContext(SOURC
CassandraJavaUtil.javaFunctions(sparkContextManager.getJavaSparkContext(SOURCE).sc())
.cassandraTable(keyspaceName, tableName);
有没有办法让spark开始工作,即使所有数据都没有下载完
是否有选项告诉spark cassandra connector使用更多线程进行提取
谢谢,
kokou.如果您查看Spark UI,表扫描将创建多少个分区?我只是做了一些类似的事情,我发现Spark为扫描创建了太多的分区,结果花费了更长的时间。我减少工作时间的方法是将配置参数
spark.cassandra.input.split.size_in_mb
设置为高于默认值的值。就我而言,一份20分钟的工作只花了大约4分钟。还有一些Cassandra read-specific Spark变量可以设置并找到。
这些问题是我最初提到的,我希望它们也能帮助你
编辑:
在对Spark配置参数进行了一些性能测试之后,我发现Spark在没有给Spark执行器足够内存的情况下创建了太多的表分区。在我的例子中,将内存增加1 GB足以使输入拆分大小参数变得不必要。如果无法为执行者提供更多内存,您可能仍然需要将spark.cassandra.input.split.size\u(单位:mb
设置得更高)作为一种解决方法