You need to enable JavaScript to run this app.
导航
ELT 支持
最近更新时间:2024.04.09 15:44:46首次发布时间:2023.12.04 14:20:26

ByteHouse 作为云原生数据仓库,逐渐引入了对 ELT(Extract-Load-Transform,提取-加载-转换)的支持。 这使得用户可以避免维护多个异构数据系统。

概述

ELT 专注于将经过最少处理的数据加载到数据仓库中,并将大部分转换操作留在分析阶段。 它不需要大量的数据建模,并为分析师提供了更灵活的选择。 ELT 已成为当今处理大数据的规范,它对数据仓库提出了许多新的要求。

查询队列

在集群中,我们可能会遇到节点出现不健康状态,或者超载的情况。 为了优化这一点,我们可以使用查询队列。
用户可以通过以下方式在每个查询的基础上指定查询队列的使用:

  1. 在查询末尾指定设置 settings enable_query_queue = 1;
  2. 在会话级别设置 set enable_query_queue = 1

每当发起查询时,服务器端管理器都会检查集群资源并创建锁。 如果资源不足,则等待资源释放后再解锁。 这种方法可以防止服务器无限制地分派计算任务,从而防止工作节点过载并可能崩溃。

异步执行

与实时分析相比,ELT 任务通常运行时间更长。 一般来说,ELT任务的执行时间需要几分钟甚至几小时。
为了减少不必要的故障并降低客户端维护连接的复杂性,ByteHouse 开发了异步执行功能,其实现如下:
用户可以通过以下方式在每个查询的基础上指定异步执行:

  1. 在查询末尾指定设置 settings enable_async_execution = 1
  2. 在会话级别设置 set enable_async_execution = 1

此设置可以减少 ELT 任务的执行时间。
初始化完成后,查询状态将写入元存储,并将异步查询ID返回给用户。 用户可以使用这个ID来查询查询的状态。 返回异步查询ID后,就表示本次查询交互完成。 在这种模式下,如果语句是SELECT,则后续结果无法传输给用户,此时我们建议用户使用异步查询+ SELECT ... INTO OUTFILE的组合来满足需求。