超棒的数据工程
精选的数据工程相关awesome事物列表。
目录
- 数据库
- 数据比较
- 数据摄取
- 文件系统
- 序列化格式
- 流处理
- 批处理
- 图表和仪表板
- 工作流
- 数据湖管理
- ELK Elastic Logstash Kibana
- Docker
- 数据集
- 监控
- 性能分析
- 测试
- 社区
数据库
- 关系型
- RQLite - 使用Raft共识协议的复制SQLite。
- MySQL - 世界上最流行的开源数据库。
- TiDB - TiDB是一个兼容MySQL协议的分布式NewSQL数据库。
- Percona XtraBackup - Percona XtraBackup是一个免费、开源、完整的在线备份解决方案,适用于所有版本的Percona Server、MySQL®和MariaDB®。
- mysql_utils - Pinterest MySQL管理工具。
- MariaDB - MySQL的增强型替代品。
- PostgreSQL - 世界上最先进的开源数据库。
- Amazon RDS - Amazon RDS使在云中设置、操作和扩展关系数据库变得简单。
- Crate.IO - 具有NOSQL优点的可扩展SQL数据库。
- 键值
- Redis - 开源、BSD许可的高级键值缓存和存储。
- Riak - 分布式数据库,通过在多个服务器上分配数据来提供最大的数据可用性。
- AWS DynamoDB - 快速灵活的NoSQL数据库服务,适用于需要在任何规模下保持一致的单位数毫秒延迟的所有应用程序。
- HyperDex - 可扩展、可搜索的键值存储。已废弃。
- SSDB - 高性能NoSQL数据库,支持多种数据结构,Redis的替代品。
- Kyoto Tycoon - Kyoto Tycoon是Kyoto Cabinet键值数据库之上的轻量级网络服务器,为高性能和并发而构建。
- IonDB - 用于微控制器和物联网应用的键值存储。
- 列式
- Cassandra - 当您需要可扩展性和高可用性而不影响性能时的正确选择。
- Cassandra Calculator - 这个简单的表单允许您尝试Apache Cassandra集群的不同值,并查看对应用程序的影响。
- CCM - 一个在localhost上轻松创建和销毁Apache Cassandra集群的脚本。
- ScyllaDB - 使用seastar框架的NoSQL数据存储,与Apache Cassandra兼容。
- HBase - Hadoop数据库,分布式、可扩展的大数据存储。
- AWS Redshift - 快速、全托管的PB级数据仓库,使用现有的商业智能工具分析所有数据变得简单且经济高效。
- FiloDB - 分布式。列式。版本化。流式。SQL。
- Vertica - 分布式、MPP列式数据库,具有广泛的分析SQL功能。
- ClickHouse - 用于OLAP的分布式列式DBMS。SQL。
- Cassandra - 当您需要可扩展性和高可用性而不影响性能时的正确选择。
- 文档
- MongoDB - 开源的文档数据库,专为易用性和可扩展性而设计。
- Percona Server for MongoDB - Percona Server for MongoDB®是MongoDB®社区版的免费、增强、完全兼容、开源、直接替代品,包含企业级功能。
- MemDB - 分布式事务内存数据库(基于MongoDB)。
- Elasticsearch - 实时搜索和分析数据。
- Couchbase - 性能最高的分布式NoSQL数据库。
- RethinkDB - 实时Web的开源数据库。
- RavenDB - 全事务NoSQL文档数据库。
- MongoDB - 开源的文档数据库,专为易用性和可扩展性而设计。
- 图
- 分布式
- DAtomic - 完全事务性、云就绪、分布式数据库。
- Apache Geode - 开源、分布式、内存数据库,用于大规模应用。
- Gaffer - 大规模图数据库。
- 时间序列
- InfluxDB - 用于指标、事件和实时分析的可扩展数据存储。
- OpenTSDB - 可扩展的分布式时间序列数据库。
- QuestDB - 为时间序列和事件数据设计的实时分析关系列式数据库。
- kairosdb - 快速可扩展的时间序列数据库。
- Heroic - 基于Cassandra和Elasticsearch的可扩展时间序列数据库,由Spotify开发。
- Druid - 列式分布式数据存储,非常适合驱动交互式应用程序。
- Riak-TS - Riak TS是唯一专门为物联网和时间序列数据优化的企业级NoSQL时间序列数据库。
- Akumuli - Akumuli是一个数字时间序列数据库。它可用于实时捕获、存储和处理时间序列数据。"akumuli"在世界语中可以翻译为"积累"。
- Rhombus - Cassandra的时间序列对象存储,处理构建宽行索引的所有复杂性。
- Dalmatiner DB - 快速分布式指标数据库。
- Blueflood - 设计用于摄取和处理时间序列数据的分布式系统。
- Timely - Timely是一个时间序列数据库应用程序,基于Accumulo和Grafana提供对时间序列数据的安全访问。
- 其他
- Tarantool - Tarantool是一个内存数据库和应用服务器。
- GreenPlum - Greenplum数据库(GPDB)- 一个先进、功能齐全的开源数据仓库。它为PB级数据量提供强大而快速的分析。
- cayley - 开源图数据库。Google开发。
- Snappydata - SnappyData:基于Apache Spark构建的OLTP + OLAP数据库。
- TimescaleDB - TimescaleDB作为PostgreSQL的扩展构建,是一个时间序列SQL数据库,提供快速分析、可扩展性,并在经过验证的存储引擎上实现自动化数据管理。
- DuckDB - DuckDB是一个快速的进程内分析数据库,没有外部依赖,可在Linux/macOS/Windows上运行,提供丰富的SQL方言,免费且可扩展。
数据比较
- datacompy - DataComPy是一个Python库,用于比较pandas、Polars、Spark等中的两个DataFrame。该库超越了基本的相等性检查,提供了行和列级别的详细差异洞察。
数据摄取
- Kafka - 将发布-订阅消息系统重新构思为分布式提交日志。
- BottledWater - 将PostgreSQL中的数据变更捕获到Kafka。已弃用。
- kafkat - 简化的Kafka代理命令行管理工具。
- kafkacat - 通用的非JVM Apache Kafka命令行生产者和消费者。
- pg-kafka - 一个用于向Apache Kafka生产消息的PostgreSQL扩展。
- librdkafka - Apache Kafka的C/C++库。
- kafka-docker - Docker环境下的Kafka。
- kafka-manager - 用于管理Apache Kafka的工具。
- kafka-node - Apache Kafka 0.8的Node.js客户端。
- Secor - Pinterest的Kafka到S3分布式消费者。
- Kafka-logger - Uber开发的Node.js版Kafka-winston日志记录器。
- AWS Kinesis - 一个完全托管的云服务,用于对大规模分布式数据流进行实时数据处理。
- RabbitMQ - 为应用程序提供可靠的消息传递。
- dlt - 一个快速简单的Python数据开发管道构建库,可在笔记本、云函数、Airflow等环境中运行。
- FluentD - 用于统一日志层的开源数据收集器。
- Embulk - 一个开源批量数据加载器,有助于在各种数据库、存储、文件格式和云服务之间传输数据。
- Apache Sqoop - 一个专为在Apache Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据而设计的工具。
- Heka - 简化数据获取和处理。已弃用。
- Gobblin - LinkedIn开发的Hadoop通用数据摄取框架。
- Nakadi - Nakadi是一个开源事件消息平台,在Kafka类队列之上提供REST API。
- Pravega - Pravega为连续和无界数据提供了一个新的存储抽象 - 流。
- Apache Pulsar - Apache Pulsar是一个开源分布式发布-订阅消息系统。
- AWS Data Wrangler - 用于在AWS上处理数据的实用工具包。
- Airbyte - 为现代数据团队提供的开源数据集成工具。
- Sling - Sling是一个CLI数据集成工具,专门用于在数据库以及存储系统之间移动数据。
- Meltano - 基于CLI和代码优先的ELT工具。
- Singer SDK - 构建符合Singer规范的自定义数据提取器和加载器的最快方式。
- Google Sheets ETL - 将所有Google表格实时导入到数据仓库。
文件系统
- HDFS - 设计用于在商用硬件上运行的分布式文件系统。
- Snakebite - 纯Python HDFS客户端。
- AWS S3 - 用于从任何地方检索任意数量数据的对象存储。
- smart_open - 用于流式传输大文件的工具(支持S3、HDFS、gzip、bz2)。
- Alluxio - Alluxio是一个以内存为中心的分布式存储系统,可在集群框架(如Spark和MapReduce)之间实现可靠的内存速度数据共享。
- CEPH - Ceph是一个统一的分布式存储系统,设计用于提供卓越的性能、可靠性和可扩展性。
- JuiceFS - JuiceFS是一个高性能的云原生文件系统,由对象存储驱动,用于大规模数据存储。
- OrangeFS - Orange文件系统是并行虚拟文件系统的一个分支。
- SnackFS - SnackFS是我们基于Cassandra构建的轻量级HDFS兼容文件系统。
- GlusterFS - Gluster文件系统。
- XtreemFS - 适用于所有存储需求的容错分布式文件系统。
- SeaweedFS - Seaweed-FS是一个简单且高度可扩展的分布式文件系统。它有两个目标:存储数十亿个文件!快速提供文件!与支持完整POSIX文件系统语义不同,Seaweed-FS选择只实现键值文件映射。类似于"NoSQL"一词,你可以称之为"NoFS"。
- S3QL - S3QL是一个文件系统,它使用Google Storage、Amazon S3或OpenStack等存储服务将所有数据存储在线上。
- LizardFS - LizardFS软件定义存储是一个分布式、并行、可扩展、容错、地理冗余且高度可用的文件系统。
序列化格式
- Apache Avro - Apache Avro™是一个数据序列化系统。
- Apache Parquet - Apache Parquet是一种列式存储格式,可用于Hadoop生态系统中的任何项目,不受数据处理框架、数据模型或编程语言的选择限制。
- Apache ORC - 适用于Hadoop工作负载的最小、最快的列式存储。
- Apache Thrift - Apache Thrift软件框架,用于可扩展的跨语言服务开发。
- ProtoBuf - Protocol Buffers - Google的数据交换格式。
- SequenceFile - SequenceFile是一个由二进制键/值对组成的平面文件。它在MapReduce中广泛用作输入/输出格式。
- Kryo - Kryo是一个快速高效的Java对象图序列化框架。
流处理
- Apache Beam - Apache Beam是一个统一的编程模型,实现了在多个执行引擎上运行的批处理和流数据处理作业。
- Spark Streaming - Spark Streaming使构建可扩展的容错流应用程序变得容易。
- Apache Flink - Apache Flink是一个流数据流引擎,为分布式计算提供数据分发、通信和容错功能。
- Apache Storm - Apache Storm是一个免费开源的分布式实时计算系统。
- Apache Samza - Apache Samza是一个分布式流处理框架。
- Apache NiFi - 一个易于使用、功能强大且可靠的系统,用于处理和分发数据。
- Apache Hudi - 一个用于管理实时处理存储的开源框架,其最有趣的特性之一是Upsert。
- VoltDB - VoltDB是一个符合ACID的RDBMS,使用共享无架构。
- PipelineDB - 流式SQL数据库。
- Spring Cloud Dataflow - Spring Boot应用程序之间的流和任务执行。
- Bonobo - Bonobo是一个适用于Python 3.5+的数据处理工具包。
- Robinhood's Faust - 永久可扩展的事件处理和内存持久K/V存储库,具有asyncio和静态类型功能。
- HStreamDB - 为物联网数据存储和实时处理而构建的流数据库。
- Kuiper - 一个用Golang实现的边缘轻量级物联网数据分析/流处理软件,可以在各种资源受限的边缘设备上运行。
- Zilla - 为事件驱动架构和流处理构建的API网关,支持标准协议如HTTP、SSE、gRPC、MQTT和原生Kafka协议。
- SwimOS - 一个用于构建实时流数据处理应用程序的框架,支持广泛的摄取源。
批处理
-
Hadoop MapReduce - Hadoop MapReduce是一个软件框架,用于轻松编写能够处理海量数据(多TB数据集)的应用程序,可在大型集群(数千个节点)上以可靠、容错的方式并行处理。
-
Spark - 一个多语言引擎,用于在单节点机器或集群上执行数据工程、数据科学和机器学习任务。
- Spark Packages - Apache Spark的社区包索引。
- Deep Spark - 连接Apache Spark与不同数据存储。已废弃。
- Spark RDD API示例 - 由Zhen He提供的示例。
- Livy - REST Spark服务器。
- Delight - 一个免费的跨平台监控工具(Spark UI / Spark History Server的替代品)。
-
AWS EMR - 一项Web服务,可以快速、经济高效地处理海量数据。
-
Data Mechanics - 一个部署在Kubernetes上的云平台,使Apache Spark更加开发者友好且具有成本效益。
-
Tez - 一个应用框架,允许复杂的有向无环图任务来处理数据。
-
Bistro - 一个轻量级引擎,用于通用数据处理,包括批处理和流分析。它基于一种新颖独特的数据模型,通过函数表示数据,通过列操作处理数据,而不是像MapReduce或SQL等传统方法那样只有集合操作。
-
批处理机器学习
- H2O - 快速可扩展的机器学习API,用于开发更智能的应用程序。
- Mahout - 一个环境,用于快速创建可扩展的高性能机器学习应用。
- Spark MLlib - Spark的可扩展机器学习库,包含常见的学习算法和实用工具,涵盖分类、回归、聚类、协同过滤、降维以及底层优化原语。
-
批处理图
- GraphLab Create - 一个机器学习平台,使数据科学家和应用开发者能够轻松创建大规模智能应用。
- Giraph - 一个迭代图处理系统,为高可扩展性而构建。
- Spark GraphX - Apache Spark的图形和图形并行计算API。
-
批处理SQL
图表和仪表板
- Highcharts - 用纯JavaScript编写的图表库,提供了一种简单的方法将交互式图表添加到您的网站或Web应用程序中。
- ZingChart - 适用于任何数据集的快速JavaScript图表。
- C3.js - 基于D3的可重用图表库。
- D3.js - 一个基于数据操作文档的JavaScript库。
- D3Plus - D3的更简单、更易用的表亲。主要是预定义模板,您只需插入数据即可。
- SmoothieCharts - 用于流数据的JavaScript图表库。
- PyXley - 使用Flask和React构建仪表板的Python辅助工具。
- Plotly - 用于在Python中构建交互式、基于Web的可视化应用的Flask、JS和CSS样板。
- Apache Superset - Apache Superset(孵化中)- 一个现代的、企业级的商业智能Web应用程序。
- Redash - 让您的公司数据驱动。连接任何数据源,轻松可视化并共享您的数据。
- Metabase - Metabase是公司中每个人提问和从数据中学习的简单开源方式。
- PyQtGraph - PyQtGraph是一个纯Python图形和GUI库,基于PyQt4 / PySide和numpy构建。它适用于数学/科学/工程应用。
工作流
- Luigi - Luigi是一个Python模块,帮助您构建复杂的批处理作业管道。
- CronQ - 一个类似cron的应用系统。与Luigi一起使用。已废弃。
- Cascading - 基于Java的应用程序开发平台。
- Airflow - Airflow是一个系统,用于以编程方式创作、调度和监控数据管道。
- Azkaban - Azkaban是LinkedIn创建的批处理工作流作业调度器,用于运行Hadoop作业。Azkaban通过作业依赖关系解决排序问题,并提供易于使用的Web用户界面来维护和跟踪工作流。
- Oozie - Oozie是一个工作流调度系统,用于管理Apache Hadoop作业。
- Pinball - 基于DAG的工作流管理器。作业流程在Python中以编程方式定义。支持作业之间的输出传递。
- Dagster - Dagster是一个用于构建数据应用程序的开源Python库。
- Kedro - Kedro是一个框架,通过提供统一的项目模板、数据抽象、配置和管道组装,使构建健壮和可扩展的数据管道变得容易。
- Dataform - 一个开源框架和基于Web的IDE,用于管理数据集及其依赖关系。SQLX扩展了您现有的SQL仓库方言,添加了支持依赖管理、测试、文档等功能。
- Census - 一个反向ETL工具,让您可以将云数据仓库中的数据同步到Salesforce、Marketo、HubSpot、Zendesk等SaaS应用程序。无需工程支持 - 只需SQL即可。
- dbt - 一个命令行工具,使数据分析师和工程师能够更有效地转换仓库中的数据。
- Kestra - 可扩展、事件驱动、语言无关的编排和调度平台,以声明性代码管理数百万个工作流。
- RudderStack - 一个以仓库为先的客户数据平台,使您能够从每个应用程序、网站和SaaS平台收集数据,然后在您的仓库和业务工具中激活它。
- PACE - 一个开源框架,允许您强制执行关于如何访问、使用和转换数据的协议,无论数据平台如何(Snowflake、BigQuery、DataBricks等)。
- Prefect - Prefect是一个编排和可观察性平台。借助它,开发人员可以快速构建和扩展弹性代码,并轻松处理中断。
- Multiwoven - 面向现代数据团队的开源反向ETL、数据激活平台。
- SuprSend - 使用API为您的通知服务创建自动化工作流和逻辑。添加模板、批处理、偏好设置、应用内收件箱,使用工作流直接从您的数据仓库触发通知。
- Kestra - 一个多功能开源编排器和调度器,基于Java构建,旨在处理广泛的工作流,具有语言无关、API优先的架构。
- Mage - 用于转换和集成数据的开源数据管道工具。
数据湖管理
- lakeFS - lakeFS是一个开源平台,为基于对象存储的数据湖提供弹性和可管理性。
- Project Nessie - Project Nessie是一个具有类Git语义的数据湖事务型目录。适用于Apache Iceberg表。
ELK Elastic Logstash Kibana
- docker-logstash - 一个高度可配置的Logstash(1.4.4)Docker镜像,运行Elasticsearch(1.7.0)和Kibana(3.1.2)。
- elasticsearch-jdbc - Elasticsearch的JDBC导入器。
- ZomboDB - Postgres扩展,允许创建由Elasticsearch支持的索引。
Docker
- Gockerize - 将Go语言服务打包成最小化的Docker容器。
- Flocker - 轻松管理Docker容器及其数据。
- Rancher - RancherOS是一个20MB的Linux发行版,将整个操作系统作为Docker容器运行。
- Kontena - 面向大众的应用容器。
- Weave - 将Docker容器编织成应用程序。
- Zodiac - 一个轻量级工具,用于轻松部署和回滚Docker化应用程序。
- cAdvisor - 分析运行中容器的资源使用情况和性能特征。
- Micro S3 persistence - 用于将卷数据保存/恢复到S3的Docker微服务。
- Rocker-compose - Docker编排工具,具有幂等特性,用于部署由多个容器组成的应用程序。已废弃。
- Nomad - Nomad是一个集群管理器,设计用于长期运行的服务和短期批处理工作负载。
- ImageLayers - 可视化Docker镜像及其组成层。
数据集
实时数据
- Twitter实时数据 - 流式API为开发者提供对Twitter全球推文数据流的低延迟访问。
- Eventsim - 事件数据模拟器。从一组用户生成伪随机事件流,旨在模拟网络流量。
- Reddit - 实时数据可用,包括发布到Reddit的评论、提交和链接。
数据转储
- GitHub Archive - GitHub自2011年以来的公共时间线,每小时更新。
- Common Crawl - 开源网络爬虫数据存储库。
- 维基百科 - 维基百科所有Wiki的完整副本,以Wiki文本源代码和嵌入XML的元数据形式提供。还提供了多个原始数据库表的SQL形式。
监控
Prometheus
- Prometheus.io - 一个开源的服务监控系统和时间序列数据库。
- HAProxy Exporter - 一个简单的服务器,用于抓取HAProxy统计数据并通过HTTP导出,以供Prometheus使用。
性能分析
数据分析器
- Data Profiler - DataProfiler是一个Python库,旨在简化数据分析、监控和敏感数据检测。
测试
- Grai - 一个数据目录工具,集成到CI系统中,暴露数据变更的下游影响测试。这些测试可防止可能破坏数据管道或BI仪表板的数据变更进入生产环境。
- DQOps - 一个开源数据质量平台,覆盖整个数据平台生命周期,从分析新数据源到全面自动化数据质量监控。
- DataKitchen - 开源数据可观测性工具,用于端到端数据旅程可观测性、数据分析、异常检测和自动创建数据质量验证测试。
社区
论坛
- /r/dataengineering - 数据工程的新闻、技巧和背景知识。
- /r/etl - 专注于ETL的子版块。
会议
- Data Council - Data Council是第一个连接数据科学家、数据工程师和数据分析师的技术会议。
播客
- Data Engineering Podcast - 关于现代数据基础设施的节目。
- The Data Stack Show - 一个与数据工程师、分析师和数据科学家交流的节目,讨论他们在构建和维护数据基础设施、交付数据和数据产品以及推动业务更好成果方面的经验。