亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

基于Apache Airflow的實時天氣數據可視化:印度30城市天氣數據流處理與展示

简介:

本文将通过一个实际的例子来展示如何在互动地图上显示印度30个城市的天气数据。数据每5分钟自动更新,确保你的Streamlit仪表板总是显示最新的信息,而无需手动刷新页面。

此指南非常适合希望入门使用Airflow构建地理空间数据管道的人,并学习如何在Docker和Docker Compose中设置。

先来看一下,为了让你一睹我们将要构建的应用程序的风采,下面是一个最终应用程序的演示。

Airflow、Docker 和 Docker Compose 入门
Airflow是什么?

Apache Airflow 是一个帮助你管理并调度任务的工具,就像数据任务的待办事项一样。它让你可以创建并监控工作流,确保一切顺利并按时完成。你可以让它自动处理任务,从而无需手动完成。广泛应用于数据工程管道中,它就像是处理复杂数据流程的智能助手。更多详情,请参阅这里提供的链接:

什么是Airflow®? — Apache Airflow®文档页面Apache Airflow®是一个用于开发、调度以及监控批处理任务的开源平台……更多详情请访问 airflow.apache.org
为什么Airflow?

你可能想知道为什么我们不直接从前端刷新应用的前端,特别是在我们使用天气 API 时。在这个例子中,天气 API 仅是为了简化说明,让用户专注于学习如何编排数据流。然而,实际上,数据通常来自多个来源,需要复杂的流程来处理和整合这些数据。

Apache Airflow 在管理数据工作流方面表现出色,能够高效地清洗、转换和聚合数据。这种分离数据处理与可视化的做法使系统更模块化且易于维护。Airflow 自动化更新过程,确保数据保持最新无需手动干预,并将资源密集型任务转移到专用服务器上,确保前端保持响应性。

此外,Airflow 提供了强大的错误处理和监控功能,使系统更加可靠且易于调试。其可扩展、灵活且高效的架构能够应对日益增长的数据需求,并无缝地整合新的数据源。虽然 Airflow 在数据工程领域得到广泛应用,但在地理空间领域中的应用仍刚刚起步。本指南旨在填补这个差距。

想更深入地理解的话,可以看看下面这个视频,它会一步步教你。

如何安装Apache Airflow(安装指南)

使用 Docker 和 Docker Compose 是安装 Apache Airflow 最简单和最高效的方式。这些工具允许你在配置文件中定义所有所需服务,快速搭建 Airflow 环境,确保环境一致并简化安装过程。或者,你也可以在 Python 虚拟环境中使用 pip,但这需要手动配置依赖和设置服务。对于许多用户而言,Docker 和 Docker Compose 提供了更顺畅且无忧的体验。

Docker 是什么?

Docker 是一个平台工具,它让开发者可以创建、部署和运行应用程序于独立的容器中。容器打包应用程序及其所有依赖,确保应用程序在不同环境中稳定运行。这使得 Docker 成为了开发、测试和部署应用程序的重要工具。我推荐你参考这篇很棒的教程。

什么是 Docker Compose?

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。使用 Docker Compose,你可以用 YAML 文件配置应用程序的服务、网络和卷。这简化了管理多个容器的过程,并确保它们顺畅协作。

请参阅 关于 Docker Compose 的介绍?

为什么要用 Docker 和 Docker Compose 来部署 Airflow?

使用 Docker 和 Docker Compose 来搭建 Airflow 有几个好处:

  • 隔离性:Airflow 的每个组件(如 web 服务器、调度器、数据库)都在自己的容器中运行,确保它们之间不会相互干扰。
  • 一致性:容器确保 Airflow 在任何机器上都以相同的方式运行,解决了“在我的机器上可以运行”的问题。
  • 扩展性:Docker 使得通过添加更多容器来容易扩展应用程序。
  • 设置方便:Docker Compose 让你可以在一个文件中定义和管理所有需要的服务,从而简化了设置过程。
前提条件

确保您的系统上已经安装了 Docker。如果没有的话,您可以查看Docker 安装指南 以获取更多详细信息。

本文假设你已经熟悉Python和GIS(地理信息系统)的相关概念。

项目概要

在这个项目中,我们将搭建一个地理空间数据流管道,用于实时显示印度30个城市的天气数据,并在一个互动地图上展示。目标是帮助你理解项目中的每个组件以及它们如何交互,提供一个创建你自己的数据流管道的蓝图。

下面来一步步说明我们要做什么:

  • 数据获取:我们将从外部API获取天气数据,处理数据并将其导出至CSV文件。这通过在Apache Airflow中创建一个有向无环图(DAG)来实现。
  • 定时更新:DAG将被配置为每5分钟运行一次,确保天气数据一直是最新的,反映最新的天气情况。
  • 互动地图可视化:我们将开发一个Streamlit应用程序来显示一个互动地图,该地图将可视化印度各地的天气数据。将使用Folium工具包创建此地图,每个城市将用表示温度的标记来表示。
  • 实时更新:Streamlit应用程序将每5分钟自动刷新一次,允许用户查看最新天气信息而无需手动刷新页面。
文件夹结构

该项目分为不同的目录,以帮助你理解项目结构,

以下是一些项目文件和目录结构:

    应用程序/
    ├── 应用程序主文件 (app.py)
    ├── Dockerfile (用于构建Docker镜像的文件)
    ├── requirements.txt (项目依赖包的列表)
    配置/
    DAGs/
    ├── dag1.py (第一个DAG文件)
    ├── dag2.py (第二个DAG文件)
    插件/
    docker-compose.yaml (用于定义和运行多容器Docker应用程序的文件)

注意:目录名称保持英文以符合技术规范。

  • app/: 包含主要的应用程序文件,包括Streamlit应用程序和Docker配置。

  • config/: 存放着配置文件。

  • dags/: 包含Airflow有向无环图(DAGs),用于任务调度。

  • plugins/: 存放任何自定义的Airflow插件。

  • docker-compose.yaml: 使用Docker来编排整个应用。

这些步骤和文件夹结构的目的是帮助用户理解项目设置的结构。一旦你克隆了这个仓库,所有都已经预先配置好了,所以你不必再重复接下来会详细解释的步骤。

开始吧

要开始操作,请克隆代码库并按照提供的设置说明操作。

第一步:克隆代码库。

首先,通过命令将代码库克隆到你自己的本地机器。

复制代码库并切换到该目录。
git clone https://github.com/kavyajeetbora/airflow_streamlit_orchestration.git  
cd airflow_streamlit_orchestration.
第 2 步:设置你的天气 API 密钥

要获取实时天气数据,你得从OpenWeatherMap拿到一个API密钥。下面是如何设置的:

  1. 注册:在OpenWeatherMap网站上注册一个账户。
  2. 生成API密钥值:登录后,你可以导航到API部分并生成一个新的API密钥值。
  3. 配置您的应用程序:在config/文件夹中,请参照config/config_example.txt文件中的格式,在您的API密钥中输入相应信息。在config文件夹中创建自己的配置文件(config/config.cfg),并将其保存,然后添加您的API密钥。
  4. 您可以参考以下步骤来生成API密钥:
第三步:构建 Docker 图像

接下来我们构建项目的 Docker 镜像。这一步初始化 Airflow 并配置好所需的环境,

    docker-compose airflow-init  # 初始化 Airflow(启动初始化脚本)
步骤 4:运行应用

最后一步是独立运行应用程序:

运行该命令:docker-compose up -d
访问应用:

设置完成后,你可以通过以下网址访问应用程序。

通过按照这些步骤操作,你将拥有一套功能齐全的设置,其中Airflow负责编排数据管道流程,而Streamlit则在交互式地图上展示天气数据。此设置确保天气数据每5分钟更新一次天气数据,从而提供实时的洞察。

这边:运行在8080端口的Airflow Web服务器,那边:运行在7751端口的Streamlit应用

架构简介

在结束本教程前,让我们仔细看看应用架构以及不同服务(如Airflow和Streamlit)是如何相互沟通的。这里是对设置好应用后架构的一个快速概述。

当你运行 Docker Compose 文件后,它会启动两个容器,每个容器都拥有独立的环境。本地文件系统作为共享数据空间,让容器能够无缝地共享文件。

  • Airflow 容器:一旦 Airflow 容器启动并运行,它会从 API 获取天气数据,然后处理这些数据,并将处理后的数据导出为 CSV 格式保存至本地文件夹。
  • Streamlit 容器:Streamlit 容器会访问该本地文件夹读取 CSV 文件,并在交互式地图上展示天气数据。

容器之间每5分钟进行一次通信,确保天气数据始终保持最新。如果你需要调整间隔,可以在 dags/weather_data_dag.py 文件中修改相应的时间安排。

理解了这种架构后,你会发现 Docker Compose 如何让 Airflow 和 Streamlit 交互更顺畅,形成一个高效的数据流。

结尾

在这个教程里,我们讲了以下几个关键点:

  • 项目启动:我们首先通过克隆仓库并在本地使用Docker和Docker Compose来设置应用。
  • 了解架构:我们了解了Airflow和Streamlit容器如何通过本地文件系统进行数据共享。
  • 数据管道:我们学到了如何获取、处理并每5分钟更新一次来自印度30个城市实时天气数据的可视化。
  • Airflow和Docker:我们讨论了Airflow在编排工作流中的重要性,以及Docker和Docker Compose如何简化多容器应用部署和管理的流程。

这个教程可以作为一个起点,帮助你开始接触地理空间数据管道。按照教程中的步骤操作,你可以快速搭建一个功能性的应用,而不需要复杂的配置。这样的搭建可以作为更复杂项目的基础,让你能够专注于构建和创新而不是环境配置。

作为参考,随意使用本指南作为起点,并根据您的项目想法构建您自己的工作流。该项目的完整版本可在GitHub上找到。

GitHub - kavyajeetbora/real_time_weather_data: 使用Airflow编排Streamlit应用程序 - kavyajeetbora/real_time_weather_data

如果你有任何疑问或需要进一步的帮助,随时联系我们。

编程愉快!

学习资料
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消