M.R*_*Rez 8 cassandra apache-spark parquet spark-dataframe
我已陷入这种困境,我无法选择哪种解决方案对我更好.我有一个非常大的表(几个100GB)和几个较小的(几个GB).为了在Spark中创建我的数据管道并使用spark ML,我需要加入这些表并执行几个GroupBy(聚合)操作.那些操作对我来说真的很慢,所以我选择了这两个中的一个:
我可以说Parquet分区工作速度更快,可扩展性更高,而且Cassandra使用的内存开销更少.所以问题是:
如果开发人员推断并了解数据布局及其使用方式,那么使用Parquet会不会更好,因为您可以更好地控制它?我为什么要为Cassandra带来的开销付出代价?
Cit*_*lin 14
除了Hawk66 Anwers之外:
Cassandra也是分析用例的一个很好的解决方案,但另一方面.在建模键空间之前,您必须知道如何读取数据.您也可以使用where和range查询,但是以严格限制的方式.有时你会讨厌这个限制,但这些限制有理由.Cassandra不像Mysql.在MySQL中,性能不是关键特性.它更多的是灵活性和一致性.Cassandra是一个高性能的读/写数据库.写作比阅读更好.Cassandra还具有线性可扩展性.
好的,关于你的用例:Parquet是你的最佳选择.这就是为什么:
这更适合Parquet的使用案例.Parquet是ad-hoc分析,过滤分析的解决方案.如果您需要每月运行一次或两次查询,Parquet非常好.如果一个营销人员想知道一件事并且响应时间不那么重要,Parquet也是一个很好的解决方案.简单和简短:
如果Realtime很重要,请使用Cassandra(我谈到最多30秒的延迟,来自客户做出一个动作,我可以在我的仪表板中看到结果)
如果Realtime无关紧要,请使用Parquet
这取决于您的用例。Cassandra 使使用(有限的)伪 SQL 访问数据变得更加容易(也在 Spark 之外)。这使它非常适合在其上构建在线应用程序(例如,在 UI 中显示数据)。
此外,如果您必须处理更新,Cassandra 使事情变得更容易,这不仅是将要在数据管道中摄取的新数据(例如日志),而且您还必须注意更新(例如,系统必须处理数据的更正) )
当您的用例是使用 Spark 进行分析时(并且您不关心上面提到的主题),使用 Parquet/HDFS 应该是可行的并且相当便宜 - 正如您所说的。使用 HDFS,您还可以使用 Spark 实现数据本地化,并且如果您正在读取大块数据,您的分析 Spark 应用程序可能会更快。
| 归档时间: |
|
| 查看次数: |
6099 次 |
| 最近记录: |