3

Iceberg+Spark+Trino+Dagster大数据分析开源技术栈 | by ZD

 1 year ago
source link: https://www.jdon.com/61440
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Iceberg+Spark+Trino+Dagster大数据分析开源技术栈 | by ZD
两个月我组装了ngods新一代开源数据堆栈),并从那时起将它用于我的朋友的两个项目

v2-436b2535e1f83348b6b261e42a8fe149_720w.jpg

这个堆栈可以很好地从小数据(几 GB)扩展到中型数据(几百 GB)。它也比使用基于使用定价的类似云组件(例如,Snowflake、Redshift 或 BigQuery)更便宜。
我创建了一个简单的演示来展示它的功能。您可以将此演示用作项目的起点。
该演示可在此GitHub 存储库中找到。它从 Yahoo Finance API 检索所选股票代码的数据历史,将其存储在数据仓库中,对其进行转换,并为机器学习预测和数据可视化提供分析模型。
该演示使用具有三个数据阶段的奖章架构:bronze, silver, 和gold.。

v2-a2265c1fb2d21f671202b70e28f293fc_720w.jpg

架构:

  • bronze数据阶段以其原始数据源的形式存储数据。此阶段使用Apache Iceberg进行数据存储。
  • silver数据阶段存储混合了铜牌阶段的原始数据的清理和转换数据。这个阶段也使用了 Apache Iceberg
  • gold数据阶段实施分析模型(维度、事实等)。我决定在这个阶段使用 Postgres 数据库。

ngods 数据堆栈使用dbt在每个数据阶段之间和内部转换数据。dbt 在Apache Spark中执行 SQL,用于bronze与silver阶段的数据转换:

v2-c419f8e77bfc1d490456fdb1c38d2a9d_720w.jpg

由于gold阶段使用 Postgres,dbt 必须在silver数据阶段和gold数据阶段之间移动数据。我决定使用Trino数据联合:Trino 将所有medallion数据阶段映射到一个数据库中的模式:

v2-eb69b0b35d30dbbd617d3152be37e24d_720w.jpg

ngods 使用Dagster来编排数据仓库初始化、库存数据下载和 dbt 数据转换。我喜欢 Dragster 使用 Python 代码的可扩展性

v2-8e4c06aec4bc85d620097e61bf26fd6c_720w.jpg

我使用cube.devMetabase构建了分析层。cube.dev 公开了一个带有维度和指标的无头分析模型:

v2-7e02d4bf631d2d766f4f3b38147ace65_720w.jpg

元数据库连接到此模型以进行数据可视化(报告和仪表板):

v2-315f94c13594c5bc6fff0cea516cffcb_720w.jpg

我还使用Jupyter notebook进行机器学习预测未来股票趋势(ARIMA 时间序列模型):

v2-f916072867c85a04cc7a788344667238_720w.jpg

最后但同样重要的是,所有表和分析工件都发布到DataHub数据目录:

v2-8c9c13743c6d76dcaf2b9976fe1c4d30_720w.jpg

安装步骤
您可以通过几个快速步骤运行此演示:

1. 克隆 [ngods repo](https://github.com/zsvoboda/ngods-stocks)

git clone https://github.com/zsvoboda/ngods-stocks.git

2.为您的 CPU 架构选择docker-compose脚本

cd ngods-stocks
# use the docker-compose.x86.yml for Intel CPU
cp docker-compose.x86.yml docker-compose.yml
# use the docker-compose.arm64.yml for ARM (e.g. Apple M1/M2)
cp docker-compose.arm64.yml docker-compose.yml

3. 使用docker-compose up命令启动它

docker-compose up -d
这可能需要很长时间,具体取决于您的网络速度。

4. 使用docker-compose down命令停止它

docker-compose down
然后您可以探索演示端点:

演示报告和笔记本
带有 ARIMA 股票价格预测的用于 APPL 股票代码的Jupyter 笔记本
比较 APPL、BTC 和 GC=F(黄金)股票代码历史趋势的元数据库报告
Cube.dev 报告

演示报告和notebooks

Spark

Trino

  • jdbc:trino://localhost:8060JDBC URL(用户名trino/无密码)

Cube.dev

  • http://localhost:4000 : cube.dev 开发界面
  • jdbc:postgresql://localhost:3245/cubeJDBC URL(用户名cube/密码cube)

Metabase元数据库

Dagster

DataHub数据中心

Postgres

  • jdbc:postgresql://localhost:5432/postgresJDBC URL(用户名postgres/密码postgres)

Minio


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK