我正试图找出如何最好地存储和检索数据,从S3到Cassandra,使用Spark:我有日志数据,我存储在Cassandra。我使用DSE运行Spark来执行数据分析,它工作得很好。日志数据每天都在增长,而我在任何时候都只需要Cassandra两周的数据。我仍然需要在某个地方存储至少6个月的旧日志,经过研究,S3与Glaciar看起来是最有希望的解决方案。我想使用Spark来运行一个日常作业,查找第15天的日志,从Cassandra中删除它们,并将它们发送到S3。我的问题是:我似乎无法确定将Cassandra行保存到文件的正确格式,以便有朝一日我可以将该文件加载回Spark,并在必要时运行分析。我只想有一天在Spark中运行分析,而不是将数据持久化回Cassandra。JSON似乎是一个显而易见的解决方案,但有没有其他格式我没有考虑?我应该使用Spark SQL吗?在我提交一种或另一种格式之前,任何建议都很感激。
Apache Spark就是为这种用例设计的。它是列数据库的一种存储格式。它提供列压缩和一些索引。
它正在成为事实上的标准。许多大数据平台正在采用它,或者至少为它提供一些支持。您可以使用SparkSQL, Impala或Apache Drill在S3中直接高效地查询它。您还可以针对它运行EMR作业。
使用Spark向Parquet写入数据,使用DataFrame.saveAsParquetFile
.
根据您的具体需求,您甚至可能最终不需要单独的Cassandra实例。
你可能也会觉得这篇文章很有趣