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

Spark代码:
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());}}发布于 2016-01-09 10:21:30
我可以通过在同一台服务器上使用Spark和Cassandra来提高性能。这个延迟是因为Spark和Cassandra在不同的服务器上,尽管在AWS上处于相同的区域。网络延迟是影响数据局部性的主要原因。谢谢。
发布于 2017-05-13 01:55:21
您可以参考此blog进行Spark-Cassandra连接器调优。你将会对你所期望的性能数字有一个概念。您还可以尝试另一个开源产品SnappyData,它是Spark数据库,它将在您的用例中为您提供非常高的性能。
发布于 2017-05-13 02:32:47
我还使用Cassandra Spark组合来进行实时分析。以下是一些最佳实践:
在您的例子中,您将使用
在side Java中调用R。这是一个有点慢和性能开销。因此,使用SparkR将R与Spark集成,而不是直接使用JRI。
https://stackoverflow.com/questions/33617071
复制相似问题