我正在阅读有关 lambda 架构的信息。
这说得通。我们有基于队列的数据摄取。我们有一个内存存储非常新的数据,我们有旧数据的 HDFS。
所以我们有整个数据集。在我们的系统中。非常好。
但架构图显示,合并层可以一次性查询批处理层和速度层。
怎么做?
您的批处理图层可能是地图缩减作业或 HIVE 查询。速度层查询可能是一个在 spark 上执行的 scala 程序。
现在你将如何合并这些?
有没有指导。
我正在阅读有关 lambda 架构的信息。
这说得通。我们有基于队列的数据摄取。我们有一个内存存储非常新的数据,我们有旧数据的 HDFS。
所以我们有整个数据集。在我们的系统中。非常好。
但架构图显示,合并层可以一次性查询批处理层和速度层。
怎么做?
您的批处理图层可能是地图缩减作业或 HIVE 查询。速度层查询可能是一个在 spark 上执行的 scala 程序。
现在你将如何合并这些?
有没有指导。
在我看来,您要问的是实现 lambda 架构的主要问题。这里有一些关于如何解决它的建议。
Spark 和Spark Streaming的结合在很大程度上取代了原始的 lambda 架构(通常涉及 Hadoop 和 Storm)。 阅读此处的示例,了解如何使用 aSparkContext
和单独StreamingContext
生成不同 RDD
的 s,一个用于批处理结果,另一个用于实时结果。
一旦你在你的系统中复制了它,你仍然需要考虑如何查询这两种类型的RDD
s。最简单的情况是union
他们两个:
scala> rdd1.union(rdd2).collect
或者,也许您可以创建一个新的DStream
,类似于stateStream
链接示例中的,其中一些键用于实时结果,而其他键用于批处理结果。
根据我对 lambda 架构目标的理解,您的观点是:
您的批处理图层可能是地图缩减作业或 HIVE 查询。
不是本意。批处理层并不意味着直接查询,而是提供一个服务层,可能是一个简单的键值存储,用于低延迟查询。
查看http://lambda-architecture.net/以获得更完整的解释。