Apache spark 如何结合spark和nosql数据库设计实时充电系统
我想设计一个系统Apache spark 如何结合spark和nosql数据库设计实时充电系统,apache-spark,cassandra,spark-streaming,cdr,nosql,Apache Spark,Cassandra,Spark Streaming,Cdr,Nosql,我想设计一个系统 将读取CDR(呼叫数据记录)文件并将其插入 进入nosql数据库。为了实现这一点,Cassandra作为nosql的spark流看起来很有希望,因为文件将不断出现 将能够通过对持续时间和调用数进行评级来计算实时价格,如果是数据,则仅计算千字节,并存储当前billcycle到目前为止可计费的总金额。我需要一个nosql,我将插入额定cdr,并更新该cdr中msisdn当前billcycle到目前为止的可计费总量 如果针对特定订阅更新了费率计划,则对于当前billcycle,需要
- 将读取CDR(呼叫数据记录)文件并将其插入 进入nosql数据库。为了实现这一点,Cassandra作为nosql的spark流看起来很有希望,因为文件将不断出现
- 将能够通过对持续时间和调用数进行评级来计算实时价格,如果是数据,则仅计算千字节,并存储当前billcycle到目前为止可计费的总金额。我需要一个nosql,我将插入额定cdr,并更新该cdr中msisdn当前billcycle到目前为止的可计费总量
- 如果针对特定订阅更新了费率计划,则对于当前billcycle,需要重新计算使用该价格计划的所有CDR,并且需要为所有客户计算到目前为止的总金额
- MSISDN对于具有一对一关系的每个订阅都是唯一的。 一个月内,一个msisdn最多可以拥有100000个CDR
- 到目前为止,我一直在浏览nosql数据库,我想 使用cassandra,但我仍然不确定如何设计数据库来 针对此业务案例进行优化
- HDFS->CDR中的CDR原始记录可能非常丰富,如果您需要重新处理它们,从HDFS中收集它们将更加有效
- Cassandra中的账单摘要->逐项账单摘要是最初由Spark Streaming处理的CDR结果。这些基本上是柱状的,可以完美地存储在卡桑德拉中
- MSISDN和信用信息->如上所述,这也是Cassandra的一个完美用例
- 价格计划->这些是多维的、更面向文档的,应该存储在支持这种结构的数据库中。您完全可以将Postgres与JSON结合使用,因为您不会期望更多的计划
最后,您实际上看到了一个经典的lambda用例,其中Spark Streaming用于即时处理传入的CDR,而批处理使用HDFS上的常规Spark进行后期处理,例如,当您在计划更改后重新计算CDR成本时。作为建议,你的问题很广泛,应该结束了。请阅读以帮助您更好地撰写问题!