如何实现数据流畅转换?火山引擎 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了解更多
版权声明: 本文为 InfoQ 作者【字节跳动数据平台】的原创文章。
原文链接:【http://xie.infoq.cn/article/eccf50de63073e1dc3b1fda81】。文章转载请联系作者。
评论