Java 使用Spark将数据保存到Cassandra

Java 使用Spark将数据保存到Cassandra,java,apache-spark,cassandra,spark-streaming,datastax,Java,Apache Spark,Cassandra,Spark Streaming,Datastax,现在,在我当前的架构中,我有一个模块,负责向Cassandra写入数据或从Cassandra读取数据,还有一个模块负责下载数据。最近我开始使用Datastax和Spark。我想对新采集的数据进行一些转换。对这个问题正确的看法是什么?我是使用我的模块存储数据并单独进行Spark计算,还是使用Spark流将下载的数据直接发送给Spark,并在作业中将原始数据和转换后的数据保存到Cassandra?我操作的是股票报价,所以有大量数据不断下载,并进行了大量转换 在我看来,最好把它分开 首先存储原始数据,

现在,在我当前的架构中,我有一个模块,负责向Cassandra写入数据或从Cassandra读取数据,还有一个模块负责下载数据。最近我开始使用Datastax和Spark。我想对新采集的数据进行一些转换。对这个问题正确的看法是什么?我是使用我的模块存储数据并单独进行Spark计算,还是使用Spark流将下载的数据直接发送给Spark,并在作业中将原始数据和转换后的数据保存到Cassandra?我操作的是股票报价,所以有大量数据不断下载,并进行了大量转换

在我看来,最好把它分开

首先存储原始数据,然后进行处理。
以后更容易扩展和维护每个组件


例如:如果您想更改下载模块中的某些内容,如添加新的下载源或修复bug,则不会影响spark中完成的数据处理,更改spark上运行的代码中的某些内容也不会产生任何效果(或引入bug)在您下载的原始数据上。

从不同来源下载数据的模块会在进一步发送数据之前统一数据,因此这不是问题。我只是关心Spark作为管理数据存储的模块。它简化了体系结构,因为用于数据管理的模块将是冗余的,就像Spark进行保存、转换和通过SparkSQL进行读取一样。我的问题是,它是否打算实现所有这些功能?@PawełSzychiewicz,如果您决定将下载和处理的数据存储在不同的位置(如aws s3),则会变得复杂。您需要将下载的原始数据与spark吐出的已处理数据分开。他们完全不同。我建议有一个用于下载和存储数据的模块,一个用于统一数据的模块,以及一个用于处理数据的模块。通过此设置,可以轻松维护每个零件,将来如果您决定更改某些内容,则可以非常轻松地重播所有历史数据并再次运行它