数据系统的演化和huey
数据系统的演化
AI能做什么?
数据平台,真的准备好迎接智能时代了吗? “数据系统应该怎样为AI而变”
传统数据系统是什么样的,是否有效?
你问,我答;不问,就等着
模型已经变成新的决策中枢,而数据系统却仍停留在为“人”准备报表的时代。??
:数据系统正在从“以人类为中心”走向“以模型为中心”
高质量、响应快、能理解的“数据系统”支撑: 数据的语义组织与流动机制
数据是否能理解业务,能服务模型,能适应变化”。从存储驱动,转向语义驱动和流动驱动
DataOps 数据的版本控制 核心原则”版本控制、自动化测试和持续集成。
Data as Code)探讨下如何在大数据的场景下提升数据交付的效率和质量
It's applying the whole software engineering toolchain to data.
像软件开发人员一样,执着于将代码应用于一切事物
模型部署与工具接入,不再是壁垒,而是基础服务
不是个人问题,是系统升级。
指令和数据
指令,是计算机程序的构建块,告诉计算机需要执行的操作。一条指令由操作码和操作数组成
操作码告诉计算机要执行什么操作
操作数 参与操作的数据。它可以是一个具体的数值,也可以是一个内存地址,指向存储器中需要操作的数据
数据,是计算机程序处理的对象,可以是数字、文本、图像、音频、视频等各种形式的信息
code_data
指令的取出和数据的读写
代码 可以用 git进行版本控制, Git CI/CD Docker K8s
数据可以使用 数据库进行管理 “数据湖”、“数据仓库” Data Lakes, Warehouses
数据湖是一个集中式存储库,可让您存储任何规模的所有结构化和非结构化数据 Schema: Schema-on-read,表示在读取数据时应用该模式
数据仓库是一个集中式存储库,用于存储来自多个来源的大量结构化数据 Schema: Schema-on-write,即在数据写入之前定义好Schema。
湖仓一体 数据湖和数据仓库--数据湖屋 (Data Lakehouse)
旨在提供数据仓库的数据管理和治理功能,以及数据湖的低成本存储和灵活性
哈佛架构通过硬件设计清楚地分离了数据与指令路径
数据治理
数据治理 -数据可访问性和安全性
联合数据治理
数据治理成功的因素和阻碍因素
企业领导者的教育者和政策影响者在数据治理方面
驱动因素:
合规性如今已成为企业运营中不可或缺的一部分,推动企业采用有效的数据治理来满足这些要求并保持合法性
业务利益相关者意识
支持性数据专业人员
制约力量-
与人员相关的挑战
结构和组织问题
知识缺口和培训不足--过度依赖技术
制约数据治理的力量强大而多样
层次和阶段
“数据治理”至少有三个不同层次:
数据治理作为 宏观政策问题——社会希望如何治理数据,立法和监管中反映的社会规范是什么,这在实际意义上意味着什么?
数据治理作为 组织治理问题 ——如果数据是一种资产,那么组织中个人对该资产的责任和义务是什么?
我们需要建立哪些内部调节器和修正器来规范个人行为,确保目标清晰,并支持遵守法律或信托义务?
数据治理作为 个人责任和能力的体现 ——作为个人,
我应该对我在组织中履行职责时使用的数据承担哪些责任?
我需要具备哪些技能和知识?我如何才能找到“良好”的工作方式?
Lineage
世系;血统;家系;宗系;
混沌工程——Chaos Engineering
测试偏向验证,它不能让我们去探求一些新的未知方向,或者蹦出一些我们始料未及的惊喜
混沌工程,是用来暴露生产系统中那些未知的、脆弱的环节
复杂环境和 混乱环境 Chaotic Environments
自建还是购买之争
真正的成本:时间、金钱和错失的机会
目标:但如果您的目标是扩大规模,那么购买现有的解决方案就非常有吸引力
Ad-hoc 命令是指临时执行的命令,通常用于快速执行简单的任务
Ad hoc 源自拉丁语,原意为“for this purpose only”(为此特定目的)或“for this”(为此
语中常译为“临时的”“特设的”或“自组织的”,例如临时会议(ad hoc meeting)或特定解决方案(ad hoc solution)
观念
文档固然重要,但当数据快速更新时,没有什么能取代实时上下文
自动化是战术分析的支柱——但前提是精准实施
当分析师能够将分散的数据源无缝整合,并促使利益相关者改变行为时,这就是影响力。
当他们将模糊的请求转化为驱动投资的仪表盘时,这就是价值。
单机版本
Dagobah
[python] 轻量级定时任务调度库schedule
[python] 基于依赖关系的轻量级调度器 Dagobah DAG
[python] 基于依赖关系的轻量级调度器 Huey
https://github.com/coleifer/huey
python之路——协程(greenlet、gevent、简单爬虫) 协程 协程,又称微线程,纤程。英文名Coroutine。
生产者是被 @huey.task() 修饰的函数,这样使用比较简单,只要调用一次函数,就会向队列产生推送一个任务,
消费者是 huey/bin/huey_consumer.py `consumer`模块:实现了任务队列的消费者,负责从队列中取出任务并分配给工作线程或进程执行。管理和监控任务队列
Huey`对象(任务队列的实例)
`scheduler`模块:管理定时任务的调度。
main.py 相当于生产者 main.py负责喂数据
其他版本
funboost
python 工作流调度
Airflow 提供了更强的调度功能,支持复杂的周期性调度和任务依赖
Prefect 和 Luigi 都用于工作流调度和任务管理。
Prefect 提供了更现代化的功能,如 任务重试、状态管理 和 动态工作流。它的容错和监控功能也较为强大。Prefect 更注重 云原生 工作流和高可扩展性,
Luigi 更加轻量和简洁,适合简单的 ETL 流程和小型项目。而 Luigi 更适合本地或单机环境下的简单调度任务
Ray用于计算,Celery用于分布式定时任务,异步队列
Celery
主要用于处理 异步任务队列 和任务分发,适合任务的并发执行和消息队列
huey在背后将 函数及其参数序列化后通过Redis这个broker,
提交给了huey_consumer进程。
这个进程在反向解析出函数和参数后,调度worker来执行这个函数
APScheduler是Quartz的python实
APScheduler(advance python scheduler)
invoke
invoke主要用于构建系统,但它也可以用来组织和调度任务
工作流调度
工作流调度主要涉及两个关键概念:作业计划(Job Plan)和任务实例(Task Instance)
作业计划是指预定的任务执行策略,包括何时执行、依赖关系以及执行条件等。
而任务实例则是指在具体时间点上执行的任务。
定时分片类作业调度系统和DAG工作流类作业调度系统。
定时分片类作业调度系统
DAG工作流类作业调度系统
DAG工作流调度系统可分为两种类型:静态执行列表和动态执行列表
发展趋势
工作流调度技术大体上经历了这样一条路线:
基于脚本调度→XML配置型系统→可视化低代码平台→AI驱动智能调度
概念
workflow pipeline chain
Workflow本身不做数据流的计算任务,而是将工作任务提交到计算引擎来完成。
Work
Task taskScheduler
Executor
Storage
作流调度引擎支持“事件触发+周期处理”混合模式
(1) 资源提供 (2) 资源映射到任务上
程序 = 协议 + 算法 + 任务流
collaboration 协作
Devops
主流的 Gitlab + Jenkins
Gitea 搭建了自己的Git版本控制系统 Drone 来搭建CI/CD持续集成,持续部署平台
项目中包含 .drone.yml 文件,将代码推送到 git 仓库,Drone 就能够自动化的进行编译、测试、发布
configuration as a code
tar命令的基本使用方法。利用pigz工具加速tar命令的压缩与解压 pigz(parallel gzip)
Web开发
1.request 请求
2.respond 响应
一般有两种方式来进行处理:视图函数和视图类
视图函数 直接使用一个函数来进行处理并返回数据给浏览器, 使用 app.route 装饰器对函数进行注册 使用 add_url_rule 进行注册
视图类 则是使用类来进行处理并返回的--对请求的响应行为的类 HTTPMethodView
01.用户定义的视图类需要继承于标准视图类, app.add_route 方法。第一个参数应该是用方法定义的类 as_view 调用,第二个应该是URL端点
02.将路由规则和视图类 进行绑定
3.route 路由
1.路由注册 route add_route registering
路由注册用于建立URL路径与处理器函数(也可以叫控制器函数)的对应关系。
一条路由规则由三部分组成:
http请求方法 url路径 处理器函数
2.view
3.静态文件
静态文件和目录(如图像文件)在注册到 app.static() 方法。该方法接受一个端点URL和一个文件名
4.方法
get , post , put , patch 和 delete
应用程序的入口文件中注册用户蓝图:
每一个模块都可以用蓝图声明路由app,然后把每个蓝图视为主app的子app来注册
系统和服务
用subprocess获取详细进程信息
psutil是Python最强的系统监控库之一
curl -X GET 0.0.0.0:8000
使用 -X POST 来指定 HTTP 请求方法是 POST,并且你可以通过 -d 参数来发送请求体内容。
curl -X POST 0.0.0.0:8000/hello -d '{"class":"2","grade":"三"}'
-d "key1=value1&key2=value2"
-d '{"key1": "value1", "key2": "value2"}'
使用 -o 或 --output 参数将响应内容保存到文件中。
参考
https://www.cnblogs.com/DolphinScheduler/p/18435214
https://github.com/pyinvoke/invoke
https://www.dataversity.net/analytics-in-the-trenches-tactical-approaches-for-robust-data-insights/
https://github.com/kennethreitz/records/blob/master/records.py
Huey Python 入门指南:以爬虫为例 https://juejin.cn/post/7428551242790076468

浙公网安备 33010602011771号