热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hadoop与spark的区别是什么大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)

本文主要分享【hadoop与spark的区别是什么】,技术文章【大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)】为【大数据老司机】投稿,如果你遇到大数据,Doris

本文主要分享【hadoop与spark的区别是什么】,技术文章【大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)】为【大数据老司机】投稿,如果你遇到大数据,DorisDB,StarRocks相关问题,本文相关知识或能到你。

hadoop与spark的区别是什么

文章目录 一、前言二、简单使用1)连接 StarRocks2)创建数据库3)创建表4)建表语句说明1、排序键2、字段类型3、分区分桶4、数据模型5、索引6、ENGINE 类型7、修改表结构 三、表设计1)列式存储2)稀疏索引3)列级索引4)数据模型1、明细模型 (Duplicate Key Model)2、聚合模型 (Aggregate Key Model)3、更新模型 (Unique Key Model)4、主键模型 (Primary Key Model) 5)数据分布1、常见的四种数据分布方式2、StarRocks 的数据分布方式 6)排序键和前缀索引 四、数据导入1)同步导入2)异步导入3)导入方式 五、数据提取

一、前言

DorisDB的介绍与环境部署(StarRocks)可以参考我之前的文章哦:大数据Hadoop之——DorisDB介绍与环境部署(StarRocks)

官方文档:https://docs.starrocks.com/zh-cn/main/loading/Loading_intro

二、简单使用 1)连接 StarRocks

在成功 部署 StarRocks 集群 后,您可以通过 MySQL 客户端连接任意一个 FE 节点的 query_port(默认为 9030)以连接 StarRocks。StarRocks 内置 root 用户,密码默认为空。

cd $STARROCKS_HOME
# 启动FE
./fe/bin/start_fe.sh --daemon
# 启动BE
./be/bin/start_be.sh --daemon
# 启动broker
./apache_hdfs_broker/bin/start_broker.sh --daemon
# 连接
mysql -h 127.0.0.1 -P9030 -uroot

show proc '/frontends'\G;
show proc '/backends'\G;

web UI:http://192.168.182.110:8030/system

2)创建数据库

使用 root 用户创建 example_db 数据库。

 CREATE DATABASE example_db;
show databases;

说明:与 MySQL 的表结构类似,Information_schema 包含当前 StarRocks 集群的元数据信息。

3)创建表
use example_db;
CREATE TABLE IF NOT EXISTS detailDemo (
    recruit_date  DATE           NOT NULL COMMENT "YYYY-MM-DD",
    region_num    TINYINT        COMMENT "range [-128, 127]",
    num_plate     SMALLINT       COMMENT "range [-32768, 32767] ",
    tel           INT            COMMENT "range [-2147483648, 2147483647]",
    id            BIGINT         COMMENT "range [-2^63 + 1 ~ 2^63 - 1]",
    password      LARGEINT       COMMENT "range [-2^127 + 1 ~ 2^127 - 1]",
    name          CHAR(20)       NOT NULL COMMENT "range char(m),m in (1-255) ",
    profile       VARCHAR(500)   NOT NULL COMMENT "upper limit value 65533 bytes",
    hobby         STRING         NOT NULL COMMENT "upper limit value 65533 bytes",
    leave_time    DATETIME       COMMENT "YYYY-MM-DD HH:MM:SS",
    channel       FLOAT          COMMENT "4 bytes",
    income        DOUBLE         COMMENT "8 bytes",
    account       DECIMAL(12,4)  COMMENT "",
    ispass        BOOLEAN        COMMENT "true/false"
) ENGINE=OLAP
DUPLICATE KEY(recruit_date, region_num)
DISTRIBUTED BY HASH(recruit_date, region_num) BUCKETS 8;

【错误】ERROR 1064 (HY000): Failed to find enough host in all backends. need: 3

【原因】这是因为默认需要3个副本,副本数必须是<=BE数,需要带上PROPERTIES,设置副本数。

use example_db;
CREATE TABLE IF NOT EXISTS detailDemo (
    recruit_date  DATE           NOT NULL COMMENT "YYYY-MM-DD",
    region_num    TINYINT        COMMENT "range [-128, 127]",
    num_plate     SMALLINT       COMMENT "range [-32768, 32767] ",
    tel           INT            COMMENT "range [-2147483648, 2147483647]",
    id            BIGINT         COMMENT "range [-2^63 + 1 ~ 2^63 - 1]",
    password      LARGEINT       COMMENT "range [-2^127 + 1 ~ 2^127 - 1]",
    name          CHAR(20)       NOT NULL COMMENT "range char(m),m in (1-255) ",
    profile       VARCHAR(500)   NOT NULL COMMENT "upper limit value 65533 bytes",
    hobby         STRING         NOT NULL COMMENT "upper limit value 65533 bytes",
    leave_time    DATETIME       COMMENT "YYYY-MM-DD HH:MM:SS",
    channel       FLOAT          COMMENT "4 bytes",
    income        DOUBLE         COMMENT "8 bytes",
    account       DECIMAL(12,4)  COMMENT "",
    ispass        BOOLEAN        COMMENT "true/false"
) ENGINE=OLAP
DUPLICATE KEY(recruit_date, region_num)
DISTRIBUTED BY HASH(recruit_date, region_num) BUCKETS 8
PROPERTIES("replication_num" = "2");

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)

【温馨提示】注意:在 StarRocks 中,字段名不区分大小写,表名区分大小写。

4)建表语句说明 1、排序键

StarRocks 表内部组织存储数据时会按照指定列排序,这些列为排序列(Sort Key)。明细模型中由 DUPLICATE KEY 指定排序列。以上示例中的 recruit_date 以及 region_num 两列为排序列。

【温馨提示】排序列在建表时应定义在其他列之前。排序键详细描述以及不同数据模型的表的设置方法请参考 排序键。

2、字段类型

StarRocks 表中支持多种字段类型,除以上示例中已经列举的字段类型,还支持 BITMAP 类型,HLL 类型,ARRAY 类型,字段类型介绍详见官方文档 数据类型章节。

【温馨提示】在建表时,您应尽量使用精确的类型。例如,整形数据不应使用字符串类型,INT 类型即可满足的数据不应使用 BIGINT 类型。精确的数据类型能够更好的发挥数据库的性能。

3、分区分桶 分区的定义: 对数据进行水平切分, 水平切分之后数据是完全物理隔离的,每个分区即为一个物理文件夹。分桶的定义: 对数据进行 垂直切分,各个分桶相互独立,每个分桶即为一个文件。 PARTITION 关键字用于给表 创建 分区,StarRocks 支持动态生成分区,详见 动态分区管理。 DISTRIBUTED 关键字用于给表 创建 分桶,以上示例中使用 recruit_date 以及 region_num 两个字段通过 Hash 算法创建 8 个桶。创建表时合理的分区和分桶设计可以优化表的查询性能。有关分区分桶列如何选择,详见 数据分布。 4、数据模型

DUPLICATE 关键字表示当前表为明细模型KEY 中的列表示当前表的排序列。StarRocks 支持多种数据模型,分别为 明细模型聚合模型更新模型主键模型。不同模型的适用于多种业务场景,合理选择可优化查询效率。

5、索引

StarRocks 默认会给 Key 列创建稀疏索引加速查询,具体规则见 排序键。支持的索引类型有 Bitmap 索引,Bloomfilter 索引 等。

6、ENGINE 类型

默认 ENGINE(引擎) 类型为 OLAP,对应 StarRocks 集群内部表。其他可选项包括 mysql,elasticsearch,hive,以及 ICEBERG,分别代表所创建的表为相应类型的 外部表。

7、修改表结构

您可以通过 ALTER TABLE 命令可以修改表的 Schema,包括增加列,删除列,修改列类型(暂不支持修改列名称),改变列顺序。

【增加列】

ALTER TABLE detailDemo ADD COLUMN uv BIGINT DEFAULT '0' after ispass;

【查看修改表结构作业状态】

SHOW ALTER TABLE COLUMN\G;

当作业状态为 FINISHED,则表示作业完成,新的表结构修改已生效。
【取消修改表结构】
您可以通过以下命令取消当前正在执行的作业。

CANCEL ALTER TABLE COLUMN FROM table_name\G;

【创建用户并授权】
example_db 数据库创建完成之后,您可以使用 root 账户创建 test 账户,并授予其 example_db 的读写权限 。

CREATE USER 'test' IDENTIFIED by '123456';
GRANT ALL on example_db to test;

通过登录被授权的 test 账户,其他用户就可以操作 example_db 数据库了。

mysql -h 127.0.0.1 -P9030 -utest -p
输入密码:123456
show databases;
show tables from example_db;
三、表设计 1)列式存储

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)

StarRocks 中的表和关系型数据相同,由 行和列构成。每行数据对应用户一条记录,每列数据具有相同的数据类型。所有数据行的列数相同,可以动态增删列。在 StarRocks 中,一张表的列可以分为维度列(也称为 Key 列)和指标列(也称为 Value 列)。在 StarRocks 中,表的数据按 列存储。物理上,一列数据会经过 分块编码、压缩等操作,然后持久化存储到非易失设备上。维度列用于分组和排序,指标列的值可以通过聚合函数 SUM、COUNT、MIN、MAX、REPLACE、HLL_UNION 和 BITMAP_UNION 等累加起来。因此,StarRocks 中的表也可以认为是多维的 Key 到多维指标的映射。 2)稀疏索引

范围查找时,使用前缀索引 (Prefix Index),如下图所示。

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)


一张表中的数据组织主要由三部分构成:

前缀索引:表中每 1024 行数据构成一个 逻辑数据块 (Data Block)。每个逻辑数据块在前缀索引表中存储 一项索引,内容为表的维度列的前缀,并且长度 不超过 36 字节前缀索引是一种 稀疏索引,使用某行数据的维度列的前缀查找索引表,可以确定该行数据所在逻辑数据块的起始行号。 Per-column data block:表中每列数据都按 64 KB 分块存储。数据块作为一个单位单独编码、压缩,也作为 I/O 单位,整体写回设备或者读出。 Per-column cardinal index:表中每列数据都有各自的 行号索引表列的数据块和行号索引一一对应,索引由数据块的起始行号及数据块的位置和长度信息构成。用数据行的行号查找行号索引表,可以获取包含该行号的数据块所在的位置,读取目标数据块后,可以进一步查找数据。

由此可见,查找维度列的前缀的过程包含以下五个步骤:

先查找前缀索引,获得逻辑数据块的起始行号。查找维度列的行号索引,定位到维度列的数据块。读取数据块。解压、解码数据块。从数据块中找到维度列前缀对应的数据项。 3)列级索引

StarRocks 支持布隆过滤器 (Bloom Filter)ZoneMap 索引位图 (Bitmap) 索引等列级别的索引技术:

布隆过滤器有助于快速判断数据块中不含所查找的值。

ZoneMap 索引有助于通过数据范围快速过滤出待查找的值。

位图索引有助于快速计算出枚举类型的列满足一定条件的行。

4)数据模型

建表时,您需要指定数据模型 (Data Model),这样数据导入至数据模型时,StarRocks 会按照排序健对数据进行排序、处理和存储。

StarRocks 支持四种数据模型,分别是明细模型 (Duplicate Key Model)聚合模型 (Aggregate Key Model)更新模型 (Unique Key Model)主键模型 (Primary Key Model)。这四种数据模型能够支持多种数据分析场景,例如日志分析、数据汇总分析、实时分析等。

1、明细模型 (Duplicate Key Model)

明细模型是默认的建表模型。创建表时,支持定义排序键。如果查询的过滤条件包含排序键,则 StarRocks 能够快速地过滤数据,提高查询效率明细模型适用于分析日志数据等,支持追加新数据,不支持修改历史数据

【适用场景】

分析原始数据,例如原始日志、原始操作记录等。

查询方式灵活,不需要局限于预聚合的分析方式。

导入日志数据或者时序数据,主要特点是旧数据不会更新,只会追加新的数据。

【示例】
例如,需要分析某时间范围的某一类事件的数据,则可以将事件时间(event_time)和事件类型(event_type)作为排序键。

CREATE TABLE IF NOT EXISTS detail (
    event_time DATETIME NOT NULL COMMENT "datetime of event",
    event_type INT NOT NULL COMMENT "type of event",
    user_id INT COMMENT "id of user",
    device_code INT COMMENT "device code",
    channel INT COMMENT ""
)
DUPLICATE KEY(event_time, event_type)
DISTRIBUTED BY HASH(user_id) BUCKETS 8
PROPERTIES("replication_num" = "2");
2、聚合模型 (Aggregate Key Model)

建表时,支持定义排序键和指标列并为指标列指定聚合函数。当多条数据具有相同的排序键时,指标列会进行聚合。在分析统计和汇总数据时,聚合模型能够减少查询时所需要处理的数据,提升查询效率。

【适用场景】
适用于分析统计和汇总数据。比如:

通过分析网站或 APP 的访问流量,统计用户的访问总时长、访问总次数。

广告厂商为广告主提供的广告点击总量、展示总量、消费统计等。

通过分析电商的全年交易数据,获得指定季度或者月份中,各类消费人群的爆款商品。

【示例】
例如某一段时间内,来自不同城市的用户,访问不同网页的总次数。则可以将网页地址 site_id、日期 date 和城市代码 city_code 作为排序键,将访问次数 pv 作为指标列,并为指标列 pv 指定聚合函数为 SUM。

CREATE TABLE IF NOT EXISTS example_db.aggregate_tbl (
    site_id LARGEINT NOT NULL COMMENT "id of site",
    date DATE NOT NULL COMMENT "time of event",
    city_code VARCHAR(20) COMMENT "city_code of user",
    pv BIGINT SUM DEFAULT "0" COMMENT "total page views"
)
DISTRIBUTED BY HASH(site_id) BUCKETS 8
PROPERTIES("replication_num" = "2");
3、更新模型 (Unique Key Model)

建表时,支持定义主键和指标列查询时返回主键相同的一组数据中的最新数据。相对于明细模型,更新模型简化了数据导入流程,能够更好地支撑实时和频繁更新的场景。

【适用场景】

实时和频繁更新的业务场景,例如分析电商订单。在电商场景中,订单的状态经常会发生变化,每天的订单更新量可突破上亿。

【示例】
在电商订单分析场景中,经常按照日期对订单状态进行统计分析,则可以将经常使用的过滤字段订单创建时间 create_time、订单编号 order_id 作为主键,其余列订单状态 order_state 和订单总价 total_price 作为指标列。这样既能够满足实时更新订单状态的需求,又能够在查询中进行快速过滤。

CREATE TABLE IF NOT EXISTS orders (
    create_time DATE NOT NULL COMMENT "create time of an order",
    order_id BIGINT NOT NULL COMMENT "id of an order",
    order_state INT COMMENT "state of an order",
    total_price BIGINT COMMENT "price of an order"
)
UNIQUE KEY(create_time, order_id)
DISTRIBUTED BY HASH(order_id) BUCKETS 8
PROPERTIES("replication_num" = "2");
4、主键模型 (Primary Key Model)

StarRocks 1.19 版本推出了主键模型 (Primary Key Model) 。建表时,支持定义主键和指标列,查询时返回主键相同的一组数据中的最新数据。相对于更新模型,主键模型在查询时不需要执行聚合操作,并且支持谓词下推和索引使用,能够在支持实时和频繁更新等场景的同时,提供高效查询。

【适用场景】
主键模型适用于实时和频繁更新的场景,例如:

主实时对接事务型数据至 StarRocks。事务型数据库中,除了插入数据外,一般还会涉及较多更新和删除数据的操作,因此事务型数据库的数据同步至 StarRocks 时,建议使用主键模型。 利用部分列更新轻松实现多流 JOIN。在用户画像等分析场景中,一般会采用大宽表方式来提升多维分析的性能,同时简化数据分析师的使用模型。

【示例】
例如,需要实时分析用户情况,则可以将用户 ID user_id 作为主键,其余为指标列。建表语句如下:

create table orders (
    dt date NOT NULL,
    order_id bigint NOT NULL,
    user_id int NOT NULL,
    merchant_id int NOT NULL,
    good_id int NOT NULL,
    good_name string NOT NULL,
    price int NOT NULL,
    cnt int NOT NULL,
    revenue int NOT NULL,
    state tinyint NOT NULL
) PRIMARY KEY (dt, order_id)
PARTITION BY RANGE(`dt`) (
    PARTITION p20210820 VALUES [('2021-08-20'), ('2021-08-21')),
    PARTITION p20210821 VALUES [('2021-08-21'), ('2021-08-22')),
    PARTITION p20210929 VALUES [('2021-09-29'), ('2021-09-30')),
    PARTITION p20210930 VALUES [('2021-09-30'), ('2021-10-01'))
) DISTRIBUTED BY HASH(order_id) BUCKETS 4
PROPERTIES("replication_num" = "2");

【温馨提示】enable_persistent_index:是否持久化主键索引,同时使用磁盘和内存存储主键索引,避免主键索引占用过大内存空间。取值为 true 或者 false。如果磁盘为固态硬盘 SSD,则建议设置为 true。自 2.3.0 版本起,StarRocks 支持配置该参数。

5)数据分布 1、常见的四种数据分布方式

现代分布式数据库中,常见的数据分布方式有如下四种:Round-RobinRangeListHash。如下图所示:

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)

Round-Robin:以轮询的方式把数据逐个放置在相邻节点上。

Range:按区间进行数据分布。如上图所示,区间 [1-3]、[4-6] 分别对应不同的范围 (Range)。

List:直接基于离散的各个取值做数据分布,性别、省份等数据就满足这种离散的特性。每个离散值会映射到一个节点上,多个不同的取值可能也会映射到相同节点上。

Hash:通过哈希函数把数据映射到不同节点上。

为了更灵活地划分数据,除了单独采用上述四种数据分布方式之一以外,您还可以根据具体的业务场景需求组合使用这些数据分布方式。常见的组合方式有 Hash+HashRange+HashHash+List

2、StarRocks 的数据分布方式

StarRocks 支持如下两种数据分布方式:

Hash 数据分布方式:一张表为一个分区,分区按照分桶键和分桶数量进一步进行数据划分。采用 Hash 分布的建表语句如下,其中分桶键为 site_id:
CREATE TABLE site_access(
site_id INT DEFAULT '10',
city_code SMALLINT,
user_name VARCHAR(32) DEFAULT '',
pv BIGINT SUM DEFAULT '0'
)
AGGREGATE KEY(site_id, city_code, user_name)
DISTRIBUTED BY HASH(site_id) BUCKETS 10
PROPERTIES("replication_num" = "2");
Range+Hash 数据分布方式:一张表拆分成多个分区,每个分区按照分桶键和分桶数量进一步进行数据划分。采用Range+Hash组合分布的建表语句如下,其中分区键为 event_day,分桶键为 site_id:
CREATE TABLE site_access2(
event_day DATE,
site_id INT DEFAULT '10',
city_code VARCHAR(100),
user_name VARCHAR(32) DEFAULT '',
pv BIGINT SUM DEFAULT '0'
)
AGGREGATE KEY(event_day, site_id, city_code, user_name)
PARTITION BY RANGE(event_day)
(
PARTITION p1 VALUES LESS THAN ("2020-01-31"),
PARTITION p2 VALUES LESS THAN ("2020-02-29"),
PARTITION p3 VALUES LESS THAN ("2020-03-31")
)
DISTRIBUTED BY HASH(site_id) BUCKETS 10
PROPERTIES("replication_num" = "2");
6)排序键和前缀索引 为加速查询,StarRocks 在内部组织和存储数据时,会 把表中数据按照指定的一个或多个列进行排序。这些用于 排序的列,称之为排序健 (Sort Key)。为减少内存开销,StarRocks 在排序健的基础上又引入了前缀索引 (Prefix Index)。表中每 1024 行数据构成一个 逻辑数据块 (Data Block)。每个逻辑数据块在前缀索引表中存储一项索引,内容为表的维度列的前缀,并且长度不超过 36 字节。前缀索引是一种稀疏索引,使用某行数据的维度列的前缀查找索引表,可以确定该行数据所在逻辑数据块的起始行号。前缀索引的大小会比数据量少 1024 倍,因此会全量缓存在内存中,在实际查找的过程中可以有效加速查询。 四、数据导入

StarRocks 支持两种导入模式:同步导入异步导入

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)

1)同步导入

同步导入是指用户创建导入作业,StarRocks 同步执行,执行完成后返回导入结果。您可以通过返回的导入结果判断导入作业是否成功

支持同步模式的导入方式有 Stream LoadINSERT INTO

导入过程如下:

创建导入作业。

查看 StarRocks 返回的导入结果。

判断导入结果。如果导入结果为失败,可以重试导入作业。

【示例】Stream Load

先创建测试库表

create database testDb;
CREATE TABLE testDb.testTbl(
id INT DEFAULT '10',
city VARCHAR(32) DEFAULT ''
)
DISTRIBUTED BY HASH(id) BUCKETS 10
PROPERTIES("replication_num" = "2");

样例数据:

cat>jsontest.json<<EOF {"name": "北京", "code": 2} EOF

执行数据导入

# 语法
#curl --location-trusted -u user:passwd [-H ""...] -T data.file -XPUT http://fe_host:http_port/api/{db}/{table}/_stream_load

# 导入json
curl -v --location-trusted -u root: \
-H "format: json" -H "jsonpaths: [\"$.name\", \"$.code\"]" \
-H "columns: city,tmp_id, id = tmp_id * 100" \
-T jsontest.json \
http://127.0.0.1:8030/api/testDb/testTbl/_stream_load

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)


【示例】INSERT INTO

创建导入任务

CREATE DATABASE IF NOT EXISTS load_test;
USE load_test;
CREATE TABLE insert_wiki_edit
(
    event_time DATETIME,
    channel VARCHAR(32) DEFAULT '',
    user VARCHAR(128) DEFAULT '',
    is_anonymous TINYINT DEFAULT '0',
    is_minor TINYINT DEFAULT '0',
    is_new TINYINT DEFAULT '0',
    is_robot TINYINT DEFAULT '0',
    is_unpatrolled TINYINT DEFAULT '0',
    delta INT SUM DEFAULT '0',
    added INT SUM DEFAULT '0',
    deleted INT SUM DEFAULT '0'
)
AGGREGATE KEY(event_time, channel, user, is_anonymous, is_minor, is_new, is_robot, is_unpatrolled)
PARTITION BY RANGE(event_time)
(
    PARTITION p06 VALUES LESS THAN ('2015-09-12 06:00:00'),
    PARTITION p12 VALUES LESS THAN ('2015-09-12 12:00:00'),
    PARTITION p18 VALUES LESS THAN ('2015-09-12 18:00:00'),
    PARTITION p24 VALUES LESS THAN ('2015-09-13 00:00:00')
)
DISTRIBUTED BY HASH(user) BUCKETS 3
PROPERTIES("replication_num" = "1");

通过values导入数据

INSERT INTO insert_wiki_edit VALUES
    ("2015-09-12 00:00:00","#en.wikipedia","GELongstreet",0,0,0,0,0,36,36,0),
    ("2015-09-12 00:00:00","#ca.wikipedia","PereBot",0,1,0,1,0,17,17,0);

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)


通过select导入数据

# 指定label
INSERT INTO insert_wiki_edit
    WITH LABEL insert_load_wikipedia_1
    SELECT * FROM routine_wiki_edit;

# 指定分区导入,只导入到p06和p12分区
INSERT INTO insert_wiki_edit PARTITION(p06, p12)
    WITH LABEL insert_load_wikipedia_2
    SELECT * FROM routine_wiki_edit;

# 指定部分列导入,只导入event_time和channel字段
INSERT INTO insert_wiki_edit
    WITH LABEL insert_load_wikipedia_3 (event_time, channel)
    SELECT event_time, channel FROM routine_wiki_edit;
2)异步导入

异步导入是指创建导入作业以后,StarRocks 直接返回创建成功,但创建成功不代表数据已经导入成功。StarRocks 会异步执行导入作业。在导入作业创建成功以后,您需要通过轮询的方式查看导入作业的状态。如果导入作业创建失败,可以根据失败信息,判断是否需要重试。

支持异步模式的导入方式有 Broker LoadRoutine LoadSpark Load

导入过程如下:

创建导入作业。

查看 StarRocks 返回的作业创建结果。

判断作业创建结果。如果作业创建成功,进入步骤 4;如果作业创建失败,可以回到步骤 1,尝试重试导入作业。

轮询查看导入作业的状态,直到状态变为 FINISHED 或 CANCELLED。

在异步的导入方式 Broker Load 和 Spark Load 中,一个导入作业的执行流程主要分为 5 个阶段,如下图所示:

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)


每个阶段的描述如下:

PENDING 该阶段是指提交导入作业后,等待 FE 调度执行。

ETL 该阶段执行数据的预处理,包括清洗、分区、排序、聚合等。

说明:如果是 Broker Load 作业,该阶段会直接完成。

LOADING 该阶段先对数据进行清洗和转换,然后将数据发送给 BE 处理。当数据全部导入后,进入等待生效过程,此时,导入作业的状态依旧是 LOADING。

FINISHED 在导入作业涉及的所有数据均生效后,作业的状态变成 FINISHED,此时,导入的数据均可查询。FINISHED 是导入作业的最终状态。

CANCELLED 在导入作业的状态变为 FINISHED 之前,您可以随时取消作业。另外,如果导入出现错误,StarRocks 系统也会自动取消导入作业。作业取消后,进入 CANCELLED 状态。CANCELLED 也是导入作业的一种最终状态。

3)导入方式

StarRocks 提供 Stream LoadBroker LoadRoutine LoadSpark Load INSERT INTO 多种导入方式,满足您在不同业务场景下的数据导入需求。

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)


下图详细展示了在各种数据源场景下,应该选择哪一种导入方式:

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)


StarRocks 支持导入如下数据类型:

整型类:包括 TINYINT、SMALLINT、INT、BIGINT 和 LARGEINT。举例: 1 | 1000 | 1234。

浮点类:包括 FLOAT、DOUBLE 和 DECIMAL。举例:1.1、0.23、.356。

日期类:包括 DATE 和 DATETIME。举例:2017-10-03、2017-06-13 12:34:03。

字符串类:包括 CHAR 和 VARCHAR。举例:I am a student、a。

NULL 值:举例:\N。

五、数据提取

StarRocks 拥有 Export 一种将数据导出并存储到其他介质上的功能。该功能可以将用户指定的表或分区的数据,以文本的格式,通过 Broker 进程导出到远端存储上,如 HDFS/阿里云OSS/AWS S3(或者兼容S3协议的对象存储) 等。

导出作业的执行流程

hadoop与spark的区别是什么 大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)


上图描述的处理流程主要包括:

用户提交一个 Export 作业到 FE。

PENDING阶段:FE 生成一个 ExportPendingTask,向 BE 发送 snapshot 命令,对所有涉及到的 Tablet 做一个快照,并生成多个查询计划。

EXPORTING阶段:FE 生成一个 ExportExportingTask,BE和Broker会根据FE生成的查询计划配合完成数据导出工作。

其实这里只是稍微介绍了StarRocks核心概念,想要了解更多StarRocks,请查看官方文档,https://docs.starrocks.com/zh-cn/main/introduction/StarRocks_intro,有什么疑问也欢迎给我留言哦~

本文《大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)》版权归大数据老司机所有,引用大数据Hadoop之——DorisDB核心概念介绍与简单使用(StarRocks)需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 【转】腾讯分析系统架构解析
    TA(TencentAnalytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Exceptioninthreadmainorg.apache.hadoop.security.AccessControlException:Permissiondenied: ... [详细]
  • HadoopYARN集群是一个通用的资源管理平台,可为各类计算框架提供资源的管理和调度。其核心是通过一个全局的资源管理器来实现分离资源管理与作业调度监控。Hadoop ... [详细]
author-avatar
晓小墨_641
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有