百度智能云 Apache Doris 文档操作是一个同步操作,返回结果即表示操作结束。用户需要根据返回结果的不同,进行对应的处理。 1. 执行成功,结果集为空 如果 insert 对应 select 语句的结果集为空,则返回如下: 表示执行成功。 表示没有数据被导入。 2. 执行成功,结果集不为空 在结果集不为空的情况下。返回结果分为如下几种情况: 1. Insert 执行成功并可见: 表示执行成功。 表示总共有4行数据被导入。 表示被过滤的行数。 同时会返回一个 数据不可见是一个临时状态,这批数据最终是一定可见的 数据不可见是一个临时状态,这批数据最终是一定可见的 可以通过如下语句查看这批数据的可见状态: 返回结果中的 列如果为 ,则表述数据可见。 3. 执行失败 执行失败表示没有任何数据被成功导入,并返回如下: 其中 显示失败原因。后面的 url 可以用于查询错误的数据: 可以查看到具体错误行。 2. 超时时间 INSERT 操作的超时时间由 会话变量 操作不能指定过滤阈值( )。默认的过滤阈值为 1,即素有错误行都可以被 忽略。 对于有要求数据不能够被过滤的业务场景,可以通过设置 会话变量 为 来确保当有数据被过滤掉的 时候, 不会被执行成功。 5. 性能问题 不见使用 方式进行单行的插入。如果必须这样使用,请将多行数据合并到一个 INSERT 语句中进行批量提交。 ROUTINE-LOAD ROUTINE LOAD ROUTINE0 码力 | 203 页 | 1.75 MB | 1 年前3
Apache Doris 在美团外卖数仓中的应用实践Engine)和Apache ORCFile (存储格式,编码和压缩)的技术。 Doris的系统架构如下,主要分为FE和BE两个组件,FE主要负责查询的解析、编译、优化、调度 和元数 据管理;BE主要负责查询的执行和数据存储。关于Doris的更多技术细节,可参考其官方文档。 Doris的特点: 同时支持高并发点查询和高吞吐的Ad-hoc查询。 同时支持离线批量导入和实时数据导入。 同时支持明细和聚合查询。 会显 著减少。 查询执行多实例并发优化 如上图所示,Doris默认在每个节点上为每个算子只会生成1个执行实例。这样的话,如果数据量 很大,每个执行实例的算子就需要处理大量的数据,而且无法充分利用集群的CPU、IO、内存等 资源。 一个比较容易想到的优化手段是,我们可以在每个节点上为每个算子生成多个执行实例。这样每 个算子只需要处理少量数据,而且多个执行实例可以并行执行。 下图是并发度设置为 Join Colocate Join(Local Join)是和Shuffle Join、Broadcast Join相对的概念,即将两表的数据提前按照Join Key Shard,这样在Join执行时就没有数据网络传输的开销,两表可以直接在本地进行Join。 整个Colocate Join在Doris中实现的关键点如下: 数据导入时保证数据本地性。 查询调度时保证数据本地性。 数据Balance后保证数据本地性。0 码力 | 8 页 | 429.42 KB | 1 年前3
Doris的数据导入机制以及原子性保证(C++) BE (C++) BE (C++) 整体架构简单,产品易用 • 高度兼容MySQL协议 • 主从架构,不依赖任何其他组件 • FE负责解析/生成/调度查询计划 • BE负责执行查询计划、数据存储 • 任何节点都可线性扩展 01 Doris 简介 导入的问题 02 典型应用场景——OLAP分析 数据源 数据应用 数据存储 对象存储BOS OLTP WEB端日志 表示数据状态,是否已经生效 • txnId: Doris 内部事务id,用来唯一标示一次导入事务 03 Doris 中的导入 03 Doris 中的导入 LABEL 导入任务 的标识 查看对应 导入任务 的执行情 况 用户可以 自定义 防止用户 重复导入 同一批次 数据使用 相同的label Label • 为了保证At-Most-Once 语意, 用户同一批次数据需要使用相同的Label Commit/Abort Done Coordinator Participant Prepare Phase Commit Phase Prepare Txn • 创建事务 • 规划导入执行计划 • 分发子任务 03 Doris 中的导入 FE Leader Analyzer FE Follower 数据版本 N 事务状态 PREPARE 事务管理 1.Begin Txn0 码力 | 33 页 | 21.95 MB | 1 年前3
SelectDB案例 从 ClickHouse 到 Apache Doris数仓层:语义层接收 SQL 触发计算或查询任务。数仓从 DWD 到 DWS 的计算逻 辑将在语义层中进行定义,且以单个指标和标签的形式进行定义,之后由语义层来 发送命令,生成 SQL 命令给数仓层执行计算。 加速层:从语义层接收配置、触发导入任务,比如加速哪些指标与标签均由语义层 指导。 应用层:向语义层发起逻辑查询,由语义层选择引擎,生成物理 SQL。 架构优势: 写入压力。 通过以上导入优化方案,极大地降低了存储成本, TDW 无需维护两份冗余的数据,Kafka 也只需保存最新待导入的数据。同时该方案整体实时性更好且可控,并且大宽表聚合在 Flink 中执行,可灵活加入各种 ETL 逻辑,离线和实时可对多个开发逻辑进行复用,灵活度较高。 数据模型选择 目前我们生产环境所使用的版本为 Apache Doris 1.1.3,我们对其所支持的 Unique es_optimize,以开启优化开关; 数据写入 ES 时,新增 BK 列用来存储主键 ID Hash 后的分桶序号,算法和 Doris 的分桶算法相同(CRC32); BE 生成 Bucket Join 执行计划,将分桶序号下发到 BE ScanNode 节点,并下推到 ES; ES 对查询出的数据进行 Bitmap 压缩,并将数据的多批次获取优化为一次获取,减 少网络 IO 开销; 0 码力 | 12 页 | 1.55 MB | 1 年前3
共 4 条
- 1













