我们有一个客户用来跟踪采购周期的应用程序。我们需要构建一个解决方案,帮助用户从特定主题区域的任何表中提取任何列,并且他们应该能够看到已从中拉出列的表的连接结果的所有行。它需要与Salesforce类型的报告解决方案类似。我们正在考虑Azure HDInsight中的HDFS和Spark,以支持这种查询功能。我们想知道这是否是Spark的有效用例。所有表的连接量可轻松触及5亿行,在显示给用户之前,这些行将被拉入Spark驱动程序内存。
请告诉我这是否可以使用Spark完成。
答案 0 :(得分:0)
根据我的理解,Spark主要用于批处理。如果您的用例直接面向用户,那么我怀疑使用Spark,因为可能有更好的解决方案(或替代架构)。因为实时加入5亿行听起来很疯狂!
所有表的连接量很容易触及5亿行,在显示给用户之前,这些行将被拉入Spark驱动程序内存。
这是让我困惑的另一件事。由于显而易见的原因,将所有5亿行拉入单个java进程的RAM中听起来并不合适。
<强>更新强>
仅使用spark来处理大量数据对于实时解决方案(例如您的用例)将无效。但是,如果您要预处理数据,使用其他系统缓存结果,使用结果准备视图可以为您的用户提供服务,Spark将非常有效。或多或少类似于 Lambda Architecture 。
Spark on Yarn cluster 定期处理数据并生成/更新不同的视图,分布式存储系统(最好是柱状存储系统)来缓存视图, REST API ,为用户提供视图。