airflow从datahub获取数据到mysql数据库

使用airflow从datahub获取数据到DB,修改数据,打包csv档发送minio,task执行成功邮件通知复写等

import smtplib
import pendulum
from email.mime.text import MIMEText
from email.header import Header
from airflow import DAG
from airflow.utils.dates import days_ago
from datahub.operators.datahub_to_rdb import DatahubToRDBOperator
from datetime import datetime, timedelta
from airflow.operators.python import PythonOperator
from airflow.operators.dummy import DummyOperator
from airflow.providers.mysql.operators.mysql import MySqlOperator
import pandas as pd
import boto3
from airflow.hooks.mysql_hook import MySqlHook
import tempfile
from airflow.exceptions import AirflowException
import math


def  readdata():
    # 创建mysql引擎
    mysql_hook=MySqlHook(mysql_conn_id="数据库连接id")
    sqlalchemy_engine=mysql_hook.get_sqlalchemy_engine();
    try:
      df=pd.read_sql("SELECT *   FROM  employeeinfo  ",sqlalchemy_engine)
      print(df.head())
      print('--------------')
      print(df.info())
      #生成test.csv档,并设置索引为false
      df.to_csv("test.csv",encoding=
<think>嗯,用户现在问的是数据仓库包含哪些组件。之前他们问过Doris、Hive、ClickHouse是否属于数据仓库,现在可能想更深入了解数据仓库的结构。首先,我需要回顾数据仓库的基本概念,然后分解各个组件。 数据仓库通常由多个部分构成,每个部分有不同的功能。用户可能想知道从数据源到前端展示的整个流程中的各个部分。比如数据如何被抽取、存储、处理,以及如何被访问。 首先,数据源部分,包括各种来源的数据,比如业务数据库、日志文件、外部数据等。然后是数据集成和ETL工具,这部分负责抽取、转换、加载数据到仓库中。接下来是存储层,可能有ODS、数据仓库、数据集市等分层。然后是计算引擎,处理查询和分析,比如Hive、Spark。元数据管理也很重要,记录数据结构、转换规则等。前端工具比如BI工具,还有数据质量管理、调度系统等辅助部分。 需要确保每个组件的解释清晰,并且结合之前的回答,比如提到Hive属于离线数仓,ClickHouse用于分析层,这样用户能联系起来。还要注意用户可能的实际应用场景,比如他们可能在设计数据仓库架构,或者选择合适的技术组件。 另外,用户可能对组件之间的协作流程感兴趣,比如数据从源头经过ETL进入存储层,再通过计算引擎处理,最后展示。要避免使用太多技术术语,但又要准确。需要检查是否有遗漏的组件,比如数据湖现在常和数据仓库结合,或者实时处理组件如Kafka是否属于数据仓库的一部分。不过严格来说,数据仓库更偏向于结构化数据的存储和分析,而数据湖更多是原始数据的存储,可能属于扩展部分。 最后,总结各组件的作用,帮助用户形成整体的架构图,可能用列表或图表更清晰。确保回答结构合理,逻辑连贯,符合用户的需求。</think>以下是数据仓库的组件及其作用的系统性解析: --- ### **数据仓库核心组件** 数据仓库是一个体系化系统,通常包含以下核心模块: --- #### **1. 数据源(Data Sources)** - **作用**:原始数据的来源,为数据仓库提供输入。 - **典型组件**: - 业务数据库(如 MySQL、Oracle)。 - 日志文件(如服务器日志、用户行为日志)。 - 外部数据(如第三方 API、爬虫数据)。 - 实时数据流(如 Kafka、Flink 流式数据)。 --- #### **2. 数据集成与ETL** - **作用**:将分散的原始数据抽取、清洗、转换后加载到数据仓库。 - **核心组件**: - **ETL工具**(Extract-Transform-Load): - 离线工具:Apache Sqoop(数据库到 HDFS)、DataX(异构数据同步)。 - 实时工具:Flink CDC(变更数据捕获)、Debezium。 - **数据清洗**:处理脏数据(如去重、填充缺失值、格式标准化)。 - **数据转换**:业务规则加工(如计算用户留存率、生成维度表)。 --- #### **3. 存储层** - **分层架构**: 1. **ODS(Operational Data Store)** - 原始数据镜像,保留数据的最细粒度(如未加工的日志)。 2. **DWD(Data Warehouse Detail)** - 清洗后的明细数据层(如用户订单表、行为事件表)。 3. **DWS(Data Warehouse Summary)** - 轻度聚合的公共层(如按日统计的用户访问量)。 4. **ADS(Application Data Service)** - 面向应用的数据集市(如报表专用表、推荐系统特征表)。 - **存储技术**: - 离线数仓:HDFS(Hive 表)、HBase。 - 实时数仓:Apache Doris、ClickHouse、Hudi/Iceberg(湖仓一体)。 --- #### **4. 计算引擎** - **作用**:执行数据加工、查询和分析。 - **典型组件**: - **批处理**:Hive(HQL)、Spark SQL。 - **实时计算**:Flink、Spark Structured Streaming。 - **交互式分析**:Presto、Doris、ClickHouse。 - **机器学习**:Spark MLlib、TensorFlow 集成。 --- #### **5. 元数据管理(Metadata Management)** - **作用**:记录数据的结构、血缘关系和业务含义。 - **核心功能**: - **技术元数据**:表结构、字段类型、存储位置。 - **业务元数据**:指标定义(如“DAU”的计算逻辑)、数据标签。 - **血缘追踪**:追踪数据从源头到应用的完整链路(如 ADS 表依赖哪些 DWD 表)。 - **工具**:Apache Atlas、DataHub、阿里云DataWorks。 --- #### **6. 数据服务与访问层** - **作用**:对外提供统一的数据访问接口。 - **组件**: - **BI工具**:Tableau、Superset(可视化报表)。 - **即席查询**:通过 JDBC/ODBC 连接 Presto/Doris。 - **API服务**:将数据封装为 RESTful API 供业务系统调用。 --- #### **7. 调度与运维** - **作用**:协调数据处理任务的执行并监控系统健康状态。 - **组件**: - **调度系统**:Airflow、DolphinScheduler(管理 ETL 任务依赖)。 - **监控告警**:Prometheus + Grafana(监控查询延迟、资源利用率)。 - **权限管理**:Ranger、Kerberos(控制表/列级别访问权限)。 --- #### **8. 数据质量治理** - **作用**:确保数据的准确性、一致性和可靠性。 - **关键实践**: - **数据校验**:空值率检测、唯一性约束。 - **质量规则**:定义指标波动阈值(如“日订单量下降超过 10% 则告警”)。 - **数据血缘**:快速定位数据异常的影响范围。 --- ### **扩展组件(现代数据仓库趋势)** 1. **湖仓一体(Lakehouse)** - 结合数据湖(存储原始数据)与数据仓库(结构化分析),如 Databricks Delta Lake。 2. **实时数仓** - 使用 Flink + Kafka + Hudi 实现流批一体处理。 3. **AI 增强分析** - 集成 AutoML 工具(如 BigQuery ML),直接在数仓中训练模型。 --- ### **典型架构图** ``` [数据源] → [ETL/数据集成] → [存储层(ODS→DWD→DWS→ADS)] ↓ [计算引擎(批/流处理)] ↓ [元数据管理] ←→ [调度与运维] ↓ [数据服务(BI/API/查询接口)] ``` --- ### **总结** 数据仓库不是单一工具,而是由 **数据源、ETL、存储、计算、元数据、服务、调度、质量治理** 等组件协同工作的体系。现代架构可能进一步融合实时处理、湖仓一体等能力,以支持更复杂的业务场景(如实时推荐、风控分析)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值