我有来自不同DB来源的大量数据(甲骨文、蒙戈、卡桑德拉),也有卡夫卡提供的数据。使用Tableau进行分析,面对海量数据的性能问题。因此,计划以其他方式存储数据,并使用Tableau进行可视化。现在有多个选项,需要一些帮助才能最终确定方法。
选项1:-
读取DB数据并将其存储在Parquet文件中,然后通过Spark或HiveQL或Presto公开它,并让Tableau连接到此SQL。
选项2:-
读取DB数据并将它们存储在S3中的Parquet文件中,然后使用AWS雅典娜进行分析,让Tableau连接到雅典娜。
选项3:-
读取DB数据并将它们存储在S3中的Parquet文件中,然后移动到Redshift进行分析,让Tableau连接到Redshift。
不确定上述任何一种方法是否也是流数据( Kafka )分析的好解决方案。
注意:-我有多个大表,需要连接b/w。
发布于 2020-10-09 07:58:57
据我所知,您有来自不同来源的大量数据,您还可以访问AWS。然后,您计划通过Tableau将这些数据用于分析和仪表盘。
备选案文1和2
您的选项1和2基本上是相同的,因为AWS、雅典娜和Hive基于相同的原则,即通过存储表定义的亚稳态在平面文件上创建表。雅典娜的Presto引擎和星火都是分布式的,并且在海量数据(TB数据)上都是高效的。主要区别在于定价模型(Athena基于每个请求处理的每个数据的价格,是无服务器的,而Spark可能意味着基础设施成本)。
然后,由于它们不是为自助服务BI设计的OLAP系统,所以这两个选项的性能可能不太好(它们更好地用于针对海量数据的临时查询)。
然后,您可能难以使用平面文件和表或其上的视图来管理数据模型(数据存储和压缩不会针对每个表进行优化,这可能会影响Tableau的性能)。
选项3
选项3是更好的,因为它是基于Redshift设计的,旨在支持OLAP系统。您可以将Tableau直接连接到Redshift,但是您会受到延迟的影响,而且根据用户和/或请求的数量,您可能在管理集群负载方面遇到困难。但它可以像你描述的那样起作用。
然后,如果您有性能问题,稍后您将能够从Redshift到Tableau创建数据源提取。您还可以实现一个中间数据库来存储预聚合查询(= datamart),并直接将Tableau连接到Tableau,这将避免每次在Tableau中打开仪表板时在Redshift上执行相同的查询(在这种情况下,Redshift还缓存查询)。
然后,由于需要执行多个联接,您将能够通过设置正确的分区和排序键,使用Redshift优化此类查询的数据存储。
最后,您还可以使用Redshift频谱(通过雅典娜/Glue亚稳态)直接访问Redshift中的平面文件。
文件:
https://stackoverflow.com/questions/64274185
复制相似问题