如何实现数据流畅转换?火山引擎ByteHouse推出ELT能力

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

在数据分析场景中,企业使用的数据通常具备来源多样化的特点,如支付交易记录、用户行为等,且数据格式各异,有的为行式存储结构,有的为列式存储结构。这就要求企业数仓具备一定的数据转换能力。

传统方式是采用Extract-Transform-Load (ETL)来将业务数据转换为适合数仓的数据模型,然而,这依赖于独立于数仓外的ETL系统,导致维护成本较高。但随着云计算时代的到来,云数据仓库具备更强扩展性和计算能力,也要求改变传统的ELT流程。

火山引擎ByteHouse是一款基于开源ClickHouse推出的云原生数据仓库,为用户提供极速分析体验,能够支撑实时数据分析和海量数据离线分析,同时还具备便捷的弹性扩缩容能力,极致分析性能和丰富的企业级特性。凭借其强大的计算能力,火山引擎ByteHouse目前已全面支持Extract-Load-Transform (ELT)的能力,让用户免于维护多套异构系统,产品易用性实现飞跃。

通过ByteHouse的ELT能力,用户只需将数据导入,用自定义SQL语句在ByteHouse内部进行数据转换,无需依赖独立的ETL系统及资源。具体来说,ByteHouse主要通过以下三个能力实现ELT能力:

首先,长任务管理。ByteHouse的查询时间为秒级,一旦查询中出故障,系统会直接返回错误并重试。在ETL场景下,如果一个任务已经执行50分钟才发生故障,重试意味着浪费了前50分钟的资源,影响任务推进。在ByteHouse中,SQL查询会被转化为一系列的算子,研发团队则通过提升算子的容错能力,来应对长时间查询下的系统故障问题,即当某个算子无法获得足够的内存时,系统允许该算子将一部分数据缓存在磁盘上,保证在资源紧张的情况下仍能够完成工作。

其次,异步提交能力。面对大量长耗时的ETL任务时,传统的同步执行方式需要客户端等待服务端返回,容易出现超时问题,影响后续任务执行,而ByteHouse提供的异步提交能力,通过客户端的间歇性轮训来获得用户任务的最终状态,由此保障任务在规定时间内完成。

最后,查询队列。当面临大量离线加工请求时,系统会出现超载。ByteHouse为此提供了查询队列能力,允许用户从队列大小、总CPU占用率、总内存占用率三个维度定义一个队列。

具体来说,当用户向某队列提交查询时,ByteHouse可以通过组件监听各个队列中的查询指标,如果队列未达到上限,则会将查询入队,否则拒绝。除此之外,ByteHouse还会检查队列的资源利用率,当空闲资源高过某阈值时,自动将等待中的查询出队。利用查询队列,用户在编排ETL任务时无需担心底层资源过载,让开发更加便捷。

长任务管理、异步提交和查询队列是火山引擎ByteHouse ELT的核心能力。未来,ByteHouse也会进一步迭代,支持转换函数、长任务容错、优先级队列等更丰富ELT功能,为用户提供更极致、更便捷的使用体验。

点击跳转火山引擎ByteHouse了解更多

相关推荐
数据智能老司机2 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机2 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
云上艺旅3 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
松果猿3 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
无名之逆3 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s9123601013 小时前
rust 同时处理多个异步任务
java·数据库·rust
数据智能老司机3 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构
hzulwy3 小时前
Redis常用的数据结构及其使用场景
数据库·redis
程序猿熊跃晖4 小时前
解决 MyBatis-Plus 中 `update.setProcInsId(null)` 不生效的问题
数据库·tomcat·mybatis
Three~stone5 小时前
MySQL学习集--DDL
数据库·sql·学习