在创建流处理管道时,需要两个关键组件:一个用于处理和转换数据,一个用于数据可视化。RisingWave 和 Redash 就提供了一个优秀的解决方案。
RisingWave 是一个支持实时数据处理的分布式 SQL 流数据库。它提供增量更新的物化视图,使用户能够使用 SQL 进行流数据的实时连接、转换、清洗和分析。RisingWave 兼容 PostgreSQL,并且能够无缝集成各种上游和下游连接器。这使得 RisingWave 能很轻松地融入任何现有的流处理技术栈。
Redash 是一个用户友好的开源数据可视化和商业智能(BI)工具。它提供了强大的用户界面,能够出色地探索、分析、共享和展示数据。使用 Redash 可以配置各种可视化图表和综合看板,图表能定期或按需自动刷新,确保访问最新数据。且 Redash 支持多种数据源,成为跨平台数据可视化的优先选择。
在本文中,我们将演示如何配置 Redash 以读取 RisingWave 数据库中的数据,从而设置一个完整的流处理管道。
1. 设置 RisingWave
首先,我们将部署一个 RisingWave 实例并创建数据源。
1.1 启动 RisingWave 实例
在本文中,我们将在本地部署 RisingWave。要了解如何在本地启动 RisingWave 实例,请参见快速入门指南。如果您想使用完全托管的版本,请参见 RisingWave Cloud 及其相应的快速入门指南。
1.2 创建表
让我们在 RisingWave 中创建一个表,其中包含一些数据,以便稍后在 Redash 中进行查询。因为 RisingWave 提供丰富的连接器,我们可以从各种流式服务和数据库中摄取数据。本文中,我们选择使用 Kafka。首先,我们用一个数据生成器将模拟数据发送到 Kafka,模拟数据的格式如下:
{
"year": year,
"month": month,
"day": day,
"temperature": temperature in Celsius,
"humidity": humidity %,
"rainfall": rainfall in millimeters,
}
接着,我们使用 CREATE SOURCE
命令与 Kafka broker 建立连接。以下查询创建了一个 Source weather
,并定义了数据的架构。在 RisingWave 中,Source 不会从上游系统摄取数据。要开始摄取数据,我们需要创建一个物化视图。或者,如果需要在 RisingWave 中持久化数据,可以使用 CREATE TABLE
。
CREATE SOURCE weather (
year INTEGER,
month INTEGER,
day INTEGER,
temperature DOUBLE,
humidity DOUBLE,
rainfall DOUBLE
) WITH (
connector = 'kafka',
topic = 'weather_observations',
properties.bootstrap.server = 'localhost:9092'
) FORMAT PLAIN ENCODE JSON;
Source 创建后,我们将创建一个物化视图,计算每年每月的平均温度、湿度和降雨量。
CREATE MATERIALIZED VIEW monthly_avg AS
SELECT year,
month,
avg(temperature) AS avg_temp,
avg(humidity) AS avg_humidity,
avg(rainfall) AS avg_rainfall_mm
FROM weather
GROUP BY year, month;
这样,我们就有了可以查询数据的物化视图。
2. 在 Redash 中连接 RisingWave
RisingWave 设置完毕后,让我们启动一个 Redash 实例,然后连接 RisingWave 数据库。
2.1 设置 Redash
要了解如何启动 Redash 实例,请参见设置 Redash 实例,以获取不同的部署方法。本文中,我们使用 Docker-compose 文件来部署 Redash 和所有必要的组件。
在启动 Redash 实例后,请登录或创建 Redash 帐户。
2.2 连接 RisingWave
首先,我们需要连接新的数据源。因为 RisingWave 兼容 PostgreSQL,我们可以设置新的 PostgreSQL 数据源。请从可用选项列表中找到并选择 PostgreSQL。
下一步,根据您的 RisingWave 数据库信息填写配置。本文中,我们使用 RisingWave 的默认端口、数据库和账户。对于主机,因为我们使用 Docker 本地部署 Redash,所以主机为 host.docker.internal
。您的主机地址将根据您的设置而有所不同。设置后,请点击 Create 并测试连接,以确保 Redash 能够从 RisingWave 读取数据。
数据源设置完后,我们可以开始编写查询和创建可视化图表。在 New Query 窗口下,将显示所有可用的 RisingWave 表和物化视图。可以看到,上文创建的 monthly_avg
物化视图就在其中。接下来,我们可以查询这个物化视图,也可以先进行必要的数据转换,再创建可视化图表和综合看板。
3. 总结
本文中,通过简单几步,我们将 RisingWave 与 Redash 集成。Redash 提供了广泛功能创建高级可视化图表和综合看板,而 RisingWave 则提供了强大的数据处理、转换和分析能力。此外,RisingWave 还具备更多丰富的集成可选,您可以轻松将其连接到消息系统,从而构建一个完整的流处理管道。
挑选部署流处理管道中的系统并不容易,但 RisingWave 的灵活性和用户友好性可以使整个过程变得更加可控。通过利用 RisingWave 和 Redash 的优势,您可以构建复杂的数据管道,并从流数据中解锁强大的洞察力。