Tableau 可视化 - 大数据的性能问题
Posted
技术标签:
【中文标题】Tableau 可视化 - 大数据的性能问题【英文标题】:Tableau visualization - Performance issue with huge data 【发布时间】:2020-10-09 05:03:37 【问题描述】:我有来自不同数据库源(Oracle、Mongo、Cassandra)的大量数据,还有 Kafka 中可用的事件数据。使用 Tableau 进行分析并面临海量数据的性能问题。因此,计划以其他方式存储数据并使用 Tableau 进行可视化。现在有多种选择,需要一些帮助来最终确定方法。
选项 1:-
读取数据库数据并将它们存储在 Parquet 文件中,然后通过 Spark SQL 或 HiveQL 或 Presto SQL 公开它,并让 Tableau 连接到此 SQL。
选项 2:-
读取数据库数据并将其存储在 S3 中的 Parquet 文件中,然后使用 AWS Athena 进行分析并让 Tableau 连接到 Athena。
选项 3:-
读取数据库数据并将其存储在 S3 中的 Parquet 文件中,然后移动到 Redshift 进行分析,并让 Tableau 连接到 Redshift。
不确定上述任何方法是否也是流数据 (Kafka) 分析的良好解决方案。
注意:- 我有多个大表,需要加入 b/w。
【问题讨论】:
另一个尝试的选项是以 Hyper 格式而不是 Parquet 存储文件。请参阅 Tableau 网站上的 Hyper API 【参考方案1】:我了解您拥有来自不同来源的大量数据,并且您还可以访问 AWS。然后,您计划通过 Tableau 将这些数据用于分析和仪表板。
选项 1 和 2
您的选项 1 和 2 基本相同,因为 AWS Athena 和 Hive 基于相同的原则,即通过存储表定义的元存储在平面文件上创建表。 Athena 的 Presto 引擎和 Spark 在海量数据(TB 数据)上都是分布式且高效的。主要区别在于定价模型(Athena 基于每个请求处理的每个数据的价格,并且是无服务器的,而 Spark 可能意味着基础架构成本)。
然后,这两个选项可能不会很好地执行,因为它们不是为自助式 BI 设计的 OLAP 系统(它们更适合用于对大量数据相关的临时查询)。
然后,您可能无法使用平面文件和表或视图来管理数据模型(数据存储和压缩不会针对每个表进行优化,这可能会影响 Tableau 性能)。
选项 3
选项 3 更好,因为它基于旨在支持 OLAP 系统的 Redshift。您可以将 Tableau 直接连接到 Redshift,但您会遇到延迟,并且您可能无法根据用户和/或请求的数量来管理集群负载。但它可以按照你描述的方式工作。
然后,如果您遇到性能问题,您可以稍后创建从 Redshift 到 Tableau 的数据源提取。您还可以实现一个中间数据库来存储预聚合查询(= 数据集市)并将 Tableau 直接连接到它,这将避免每次在 Tableau 中打开仪表板时在 Redshift 上执行相同的查询(在这种情况下,Redshift 也会缓存查询)。
然后,由于您需要执行多个连接,因此您可以使用 Redshift 通过设置正确的分区和排序键来优化此类查询的数据存储。
总之,您还可以使用 Redshift Spectrum(通过 Athena/Glue 元存储)直接从 Redshift 访问平面文件。
文档:
https://docs.aws.amazon.com/redshift/latest/dg/best-practices.html https://aws.amazon.com/fr/athena/pricing/【讨论】:
以上是关于Tableau 可视化 - 大数据的性能问题的主要内容,如果未能解决你的问题,请参考以下文章