如何基于日志,同步实现数据的一致性和实时抽取?
选用Spark的理由是很充分的:
这里补充说一下Swifts的作用:
Wormhole和Swifts对比如下: 落HDFS 通过Wormhole Wpark Streaming程序消费kafka的UMS,首先UMS log可以被保存到HDFS上. kafka一般只保存若干天的信息,不会保存全部信息,而HDFS中可以保存所有的历史增删改的信息.这就使得很多事情变为可能:
可以说HDFS中的日志是很多的事情基础. 介于Spark原生对parquet支持的很好,Spark SQL能够对Parquet提供很好的查询.UMS落地到HDFS上是保存到Parquet文件中的.Parquet的内容是所有log的增删改信息以及_ums_id_,_ums_ts_都存下来. Wormhole spark streaming根据namespace 将数据分布存储到不同的目录中,即不同的表和版本放在不同目录中. 由于每次写的Parquet都是小文件,大家知道HDFS对于小文件性能并不好,因此另外还有一个job,每天定时将这些的Parquet文件进行合并成大文件. 每个Parquet文件目录都带有文件数据的起始时间和结束时间.这样在回灌数据时,可以根据选取的时间范围来决定需要读取哪些Parquet文件,不必读取全部数据. 插入或更新数据的幂等性 常常我们遇到的需求是,将数据经过加工落地到数据库或HBase中.那么这里涉及到的一个问题就是,什么样的数据可以被更新到数据? 这里最重要的一个原则就是数据的幂等性. (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |