如何访问 delta 湖中的金表以用于网络仪表板和其他?

问题描述

我使用的是 delta Lake oss 版本 0.8.0。

假设我们使用原始数据计算了聚合数据和多维数据集,并使用 delta Lake 将结果保存在黄金表中。

我的问题是,是否有一种众所周知的方式来访问这些黄金表数据并将其传送到网络仪表板?

据我所知,您需要一个正在运行的 spark 会话来查询增量表。
因此,一种可能的解决方案是编写一个 web api,它执行这些 spark 查询
您也可以将黄金结果写入 postgres 之类的数据库中以访问它,但这似乎只是复制数据。

是否有已知的最佳实践解决方案?

解决方法

真正的答案取决于您对延迟、每秒请求数、数据量、部署选项(云/本地、数据所在位置 - HDFS/S3/...)等的要求。可能的方法有:

  1. 让 Spark 在您的应用程序中以本地模式运行 - 这可能需要大量内存等。
  2. Thrift JDBC/ODBC server 作为单独的进程运行,并通过 JDBC/ODBC 访问数据
  3. 使用适用于 JVM 的 Delta Standalone Reader 库直接读取数据,或通过适用于 Rust/Python/Ruby 的 delta-rs library 读取数据