Apache Doris (二十五):Doris 数据导入(三)Broker Load-1

news2024/12/24 3:46:23

目录

1. 基本原理

2. Broker Load语法


进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道,获取高质量博客内容!

宝子们订阅、点赞、收藏不迷路!抓紧订阅专题!


Apache Doris架构中除了有BE和FE进程之外,还可以部署Broker可选进程,主要用于支持Doris读写远端存储上的文件和目录。例如:Apache HDFS 、阿里云OSS、亚马逊S3等。Broker Load这种数据导入方式主要用于通过 Broker 服务进程读取远端存储(如S3、HDFS)上的数据导入到 Doris 表里。

使用 Broker load 最适合的场景就是原始数据在文件系统(HDFS,BOS,AFS)中的场景,数据量在几十到百GB 级别。用户需要通过 MySQL协议创建 Broker load 导入,并通过查看导入命令检查导入结果。

1. 基本原理

使用Broker Load导入数据时,用户在提交导入任务后,FE 会生成对应的 Plan 并根据目前 BE 的个数和文件的大小,将 Plan 分给 多个 BE 执行,每个 BE 执行一部分导入数据。BE 在执行的过程中会从 Broker 拉取数据,在对数据 transform 之后将数据导入系统。所有 BE 均完成导入,由 FE 最终决定导入是否成功。

 

​​​​​​​2. Broker Load语法

Broker Load语法如下:

LOAD LABEL load_label
(
data_desc1[, data_desc2, ...]
)
WITH BROKER broker_name
[broker_properties]
[load_properties]
[COMMENT "comments"];
  • load_label:

每个导入需要指定一个唯一的 Label。后续可以通过这个 label 来查看作业进度,格式为[database.]label_name

  • data_desc1:

用于描述一组需要导入的文件。

[MERGE|APPEND|DELETE]
DATA INFILE("file_path1"[, file_path2, ...])
[NEGATIVE]
INTO TABLE `table_name`
[PARTITION (p1, p2, ...)]
[COLUMNS TERMINATED BY "column_separator"]
[FORMAT AS "file_type"]
[(column_list)]
[COLUMNS FROM PATH AS (c1, c2, ...)]
[SET (column_mapping)]
[PRECEDING FILTER predicate]
[WHERE predicate]
[DELETE ON expr]
[ORDER BY source_sequence]
[PROPERTIES ("key1"="value1", ...)]

1. [MERGE|APPEND|DELETE]

数据合并类型,默认为 APPEND,表示本次导入是普通的追加写操作。MERGE 和 DELETE 类型仅适用于 Unique Key 模型表,其中 MERGE 类型需要配合[DELETE   ON]语句使用,以标注 Delete Flag列,而DELETE类型则表示本次导入的所有数据皆为删除数据。

2. DATA INFILE

指定需要导入的文件路径,可以是多个,可以使用通配符。路径最终必须匹配到文件,如果只匹配到目录则导入会失败

3. NEGATIVE

该关键词用于表示本次导入为一批“负”导入。这种方式仅针对具有整型 SUM 聚合类型的聚合数据表。该方式会将导入数据中,SUM 聚合列对应的整型数值取反。主要用于冲抵之前导入错误的数据。

4. PARTITION(p1, p2, ...)

可以指定仅导入表的某些分区。不再分区范围内的数据将被忽略。

5. COLUMNS TERMINATED BY

指定列分隔符。仅在 CSV 格式下有效。仅能指定单字节分隔符。

6. FORMAT AS

指定文件类型,支持 CSV、PARQUET 和 ORC 格式。默认为 CSV。

7. column list

用于指定原始文件中的列顺序。如:(k1, k2, tmpk1)。

8. COLUMNS FROM PATH AS

指定从导入文件路径中抽取的列。

9. SET (column_mapping)

指定列的转换函数。

10. PRECEDING FILTER predicate

前置过滤条件。数据首先根据 column list 和 COLUMNS FROM PATH AS 按顺序拼接成原始数据行。然后按照前置过滤条件进行过滤。

11. WHERE predicate

根据条件对导入的数据进行过滤。

12. DELETE ON expr

需配合 MEREGE 导入模式一起使用,仅针对 Unique Key 模型的表。用于指定导入数据中表示 Delete Flag 的列和计算关系。

13. ORDER BY

仅针对 Unique Key 模型的表。用于指定导入数据中表示 Sequence Col 的列。主要用于导入时保证数据顺序。

14. PROPERTIES ("key1"="value1", ...)

指定导入的format的一些参数。如导入的文件是json格式,则可以在这里指定json_root、jsonpaths、fuzzy_parse等参数。

  • WITH BROKER broker_name

指定需要使用的 Broker 服务名称。通常用户需要通过操作命令中的 WITH BROKER "broker_name" 子句来指定一个已经存在的 Broker Name。Broker Name 是用户在通过 ALTER SYSTEM ADD BROKER 命令添加 Broker 进程时指定的一个名称。一个名称通常对应一个或多个 Broker 进程。Doris 会根据名称选择可用的 Broker 进程。用户可以通过 SHOW BROKER 命令查看当前集群中已经存在的 Broker。

注:Broker Name 只是一个用户自定义名称,不代表 Broker 的类型。在公有云 Doris 中,Broker服务名称为 bos。

  • broker_properties

指定 broker 所需的信息。这些信息通常被用于 Broker 能够访问远端存储系统。格式如下:

(
"key1" = "val1",
"key2" = "val2",
...
)

可配置如下:

1. timeout:导入超时时间。默认为 4 小时。单位秒。

2. max_filter_ratio:最大容忍可过滤(数据不规范等原因)的数据比例。默认零容忍。取值范围为 0 到 1。

3. exec_mem_limit:导入内存限制。默认为 2GB。单位为字节。

4. strict_mode:是否对数据进行严格限制。默认为 false。严格模式开启后将过滤掉类型转换错误的数据。

5. timezone:指定某些受时区影响的函数的时区,如 strftime/alignment_timestamp/from_unixtime 等等,具体请查阅时区文档:https://doris.apache.org/zh-CN/docs/dev/advanced/time-zone/。如果不指定,则使用 "Asia/Shanghai" 时区。

6. load_parallelism:导入并发度,默认为1。调大导入并发度会启动多个执行计划同时执行导入任务,加快导入速度。

7. send_batch_parallelism:用于设置发送批处理数据的并行度,如果并行度的值超过 BE 配置中的 max_send_batch_parallelism_per_job(发送批处理数据的最大并行度,默认5),那么作为协调点的 BE 将使用 max_send_batch_parallelism_per_job 的值。

8. load_to_single_tablet:布尔类型,为true表示支持一个任务只导入数据到对应分区的一个tablet,默认值为false,作业的任务数取决于整体并发度。该参数只允许在对带有random分区的olap表导数的时候设置。

  • comment

指定导入任务的备注信息。可选参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/748316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华南农业大学|图像处理与分析技术综合设计|题目解答:定位数显区域并分离电表数字

设计任务 图 28 是一幅正在运行的数字电表图像(ipa28.jpg),试采用图像处理与分析 技术,设计适当的算法和程序,找出电表的数显区域,计算目标区域的长宽比 和像素面积;并提取其中面积最大的 …

免费的云数据库:探索PlanetScale,划分分支的MySQL Serverless平台

最近我发现了一个非常有趣的国外MySQL Serverless平台,它叫做PlanetScale。这个平台不仅仅是一个数据库,它能像代码一样轻松地创建开发和测试环境。你可以从主库中拉出一个与之完全相同结构的development或staging数据库,并在这个环境中进行开…

使用Pycharm

本人没有单独安装python,而是直接安装了anaconda 使用Pycharm创建项目 项目取名为HelloWorld,环境使用前面安装的anaconda pycharm安装模块的方法: 打开Pycharm>File > Settings>Project: Python>Project Interpreter

面试题更新之-hook中setState原理

文章目录 hook是什么?hook中setState原理 hook是什么? 在React中,Hook是一种用于在函数组件中添加状态和其他React特性的函数。它们被引入到React 16.8版本中,旨在解决使用类组件编写复杂逻辑时出现的一些问题。 使用Hook&#…

Redis的哨兵机制

Redis的哨兵机制是一套独立的模式,哨兵可看作是一个独立的进程,该进程发送命令,等待Redis的响应,达到监控Redis服务的作用。 如果在规定的时间内,接收不到Redis服务器的响应,那就说明Redis出现了问题&…

通用文字识别OCR 之实现自动化办公

摘要 随着技术的发展,通用文字识别(OCR)已经成为现代办公环境中不可或缺的工具之一。OCR技术可以将印刷或手写文本转换为可编辑或可搜索的数字文本,极大地提高了办公效率并实现了自动化办公。本文将深入探讨OCR技术在实现自动化办…

Promise的理解和使用(从入门到精通)

Promise的理解和使用 1.1Promise是什么 1、抽象表达 Promise是一门新的技术(ES6规范)Promise是JS进行异步编程的新解决方案(旧方案是单纯的使用回调函数) 2、具体表达: 从语法上来说:Promise是一个构造…

C++—C++程序基础

文章目录 1 数据类型1.1 基本数据类型1.2 字面值常量1.3 左值和右值1.4 引用与指针 2 基本输入输出2.1 输出2.2 输入 3 函数3.1 内联函数3.2 函数的重载 1 数据类型 1.1 基本数据类型 在C中,除了C语言中的int,char,float,double…

小程序主包超1.5MB分包处理流程优化方案

"subPackages": [// 分包1 {"root": "src, // 根目录"pages": [{"path": "views/business/index", // 页面路径"name": "business_index","aliasPath": "/business/index",&…

2023年9月广州/重庆/长沙/深圳DAMA-CDGA/CDGP认证考试报名

据DAMA中国官方网站消息,2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启,相关事宜通知如下: 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

浅析神经网络模型算法在手写文字识别中的重要作用

神经网络模型是什么?与OCR有何不同? 神经网络模型是一种机器学习算法,用于对数据进行模式识别和预测,可应用于各种任务包括图像识别、自然语言处理等。而OCR(Optical Character Recognition)是一种特定的应…

我在阴影之中 - InsCode Stable Diffusion 美图活动一期

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

第24章:事务基础知识

一、数据库事务Transactions 1.为什么要使用事务 事务可以让数据库保持一致性,通过事务的机制恢复到某个时间点,即使系统崩溃数据库修改的数据不会丢失。 2.存储引擎支持事务的情况 命令: show engines; 只有InnoDB支持事务 3.事务基本概念 事务&a…

【第四章 flutter学习之flutter基础组件】

文章目录 一、目录结构二、创建一个flutter项目三、创建自定义组件四、Container组件 就是divalignment 内容对齐方式decoration 类似border 为BoxDecoration的类 五、Text属性六、image组件六、icon组件总结、 一、目录结构 android、ios各自平台的资源文件 lib 项目目录 linu…

今天给大家分享两款实用的软件

在现代社会中,我们越来越依赖各种各样的软件来提高效率、获得信息和享受娱乐。所以,今天我将与大家分享两款我个人常用且非常实用的软件,一起来看看吧。 人工桌面: 人工桌面是一款备受欢迎的动态桌面壁纸软件,它为我们…

webRTC实现P2P音视频通话(无服务端)

文章目录 先看效果视频对话源码htmlvue2 音频对话源码遇到问题解决方案 先看效果 视频对话源码 html 虽然是vue项目&#xff0c;但是我写在了主页的index页面&#xff0c;仅仅为了测试&#xff0c; <!DOCTYPE html> <html lang"en"> <head><me…

mysql练习---备份/索引/视图

目录 一、备份与还原 二、索引 三、视图 一、备份与还原 CREATE DATABASE booksDB; use booksDB;CREATE TABLE books ( bk_id INT NOT NULL PRIMARY KEY, bk_title VARCHAR(50) NOT NULL, copyright YEAR NOT NULL );INSERT INTO books VALUES (11078, Learning MySQL, 2…

springboot mybatis 双数据库 多数据源

1. 依赖 mybatis相关&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version> </dependency> <dependency><groupId>com.baomid…

【socket编程】TCP服务器、UDP服务器、本地套接字【C语言代码实现】

目录 0. 准备知识 0.1 大小端概念 0.2 网络字节序和主机字节序的转换 0.3 点分十进制串转换&#xff08;IP地址转换函数&#xff09; 0.4 IPV4结构体&#xff1a;&#xff08;man 7 ip&#xff09; 0.5 IPV6套接字结构体&#xff1a;&#xff08;man 7 ipv6&#xff09; …