Doris分析型数据库

Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即时查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。

Doris的几种数据源导入方案

1、Doris数据仓库的第一种导入方案(Stream Load):

创建Doris 基础的分桶表,OLAP类型
CREATE TABLE example_db.test
(
id int,
outpost_uid INT,
create_time DATETIME,
apply_open_id VARCHAR(1024),
scan_result INT,
reason VARCHAR(1024),
phone VARCHAR(100),
tz_place_id VARCHAR(100),
address_id INT,
u_id INT,
case_type INT
)
ENGINE=olap
AGGREGATE KEY(id, outpost_uid,create_time,apply_open_id,scan_result,reason,phone,tz_place_id,address_id,u_id,case_type)
COMMENT "my first doris table"
DISTRIBUTED BY HASH(id) BUCKETS 10;
将需要的TXT的文件,上传到服务器某一个文件夹下面。
/home/wx_outpost_scan.txt

书写Doris 数据倒入脚本命令

curl -u root:doris密码 -H "label:liuwunan2" -H "column_separator:," -T /home/wx_outpost_scan.txt http://BE_IP:8040/api/example_db/aaaaa/_stream_load

 Demo操作:

 数据样例对比

查看日志:
show load order by createtime desc limit 1\G

备注说明

数据倒入,此处需要注意一个问题:
column_separator 用于指定倒入文件中的列的分隔符,默认为\t,如果是不可见字符,则需要加\x作为前缀,使用十六进制来表示分隔符。
如Hive文件分隔符\x01,则需要指定为-H “column_separator:\x01”。

2、HDFS文本文件导入Doris中(Broker Load):

HDFS文件倒入Doris
需要启动apache_hdfs_broker组件:
直接启动,不需要修改配置文件 组件服务:BrokerBootstrap,【切记后台守护进程运行】

第1步:创建Doris表(指定对应字段)

create table student1
(
phone  varchar(50) ,
user_name String ,
id_card varchar(50),
times date
)
DUPLICATE KEY(phone)
DISTRIBUTED BY HASH(id_card) BUCKETS 10;

 第2步:创建HDFS数据导入的流

LOAD LABEL student
(
DATA INFILE("hdfs://HDFS_IP(活跃节点):8020/test_copy_copy/*")
INTO TABLE student1
COLUMNS TERMINATED BY "^"
(c1, c2, c3, c4)
set(
user_name=c1,
id_card=c2,
phone=c3,
times=c4)
)
WITH BROKER "BROKER_NAME"
(
"username"="hdfs",
"password"=""
)
PROPERTIES
("timeout" = "3600","max_filter_ratio"="0.1"
);

解释说明:

第3步:查看过程和结果

第4步:查看结果

3、Kafka实时接入数据进入Doris(Routine Load

第1步:创建Doris 导入表

create table student222
(
id varchar(50),
user_name varchar(50) ,
times varchar(50)
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 10;

第2步:创建Doris 接入Kafka 数据持续任务

CREATE ROUTINE LOAD student001 ON student222
COLUMNS TERMINATED BY ",",
COLUMNS(id, user_name, times )
PROPERTIES
("desired_concurrent_number"="3","max_batch_interval" = "10","max_batch_rows" = "300000","max_batch_size" = "209715200","strict_mode" = "false"
)
FROM KAFKA
("kafka_broker_list" = "zk_IP:9092,zk_IP:9092,zk_IP:9092","kafka_topic" = "test_1","property.group.id" = "test_1_001","property.client.id" = "test_1_001","property.kafka_default_offsets" = "OFFSET_END"
);

截图指示说明:

offset 可以指定从大于等于 0 的具体 offset,或者:
OFFSET_BEGINNING: 从有数据的位置开始订阅。
OFFSET_END: 从末尾开始订阅。
时间格式,如:"2021-05-22 11:00:00"
如果没有指定,则默认从 OFFSET_END 开始订阅 topic 下的所有 partition。

第3步:检查流任务状态(SHOW ROUTINE LOAD \G)

第4步:Kafka推送测试数据

第5步:查询Doris数据库数据

第六步:【重要说明】

show ROUTINE LOAD \G;

查看日志

取消

stop ROUTINE LOAD for  任务名称

stop ROUTINE LOAD for student001;

启动

resume routine load for student222;

"max_batch_interval" = "20", 每个子任务最大执行时间,单位是秒。范围为 5 到 60。默认为10。
"max_batch_rows" = "300000", 每个子任务最多读取的行数。必须大于等于200000。默认是200000。
"max_batch_size" = "209715200"每个子任务最多读取的字节数。单位是字节,范围是 100MB 到 1GB。默认是 100MB。
这三个参数,用于控制一个子任务的执行时间和处理量。当任意一个达到阈值,则任务结束。

4、Mysql外部表数据引用导入(支持CDC模式

第一步:安装unixODBC相关依赖
yum install -y unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel
查看是否安装成功

[root@localhost ~]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

第二步:安装ODBC

当前我的数据库版本为5.7 所以下载下面链接地址文件即可。

wget https://downloads.mysql.com/archives/get/p/10/file/mysql-connector-odbc-5.3.11-1.el7.x86_64.rpm

下载完毕  在下载文件夹下面 进行安装

yum install -y mysql-connector-odbc-5.3.11-1.el7.x86_64.rpm

本博主已经下载:
链接:https://pan.baidu.com/s/12gPrDaDI7XyaJt4-mRd4Lg 
提取码:k0rl

所有BE节点都要相同操作 安装。

第3步:配置 unixODBC,验证通过 ODBC 访问 Mysql(相当于对服务器进行ODBC安装,同时测试客户端)

编辑 ODBC 配置文件 【3台服务器】

vim /etc/odbc.ini
[mysql]
Description = Data source MySQL
Driver = MySQL ODBC 5.3 Unicode Driver
Server = hadoop1                 【mysql服务器IP的hostname】
Host = hadoop1                   【mysql服务器IP的hostname】
Database = test                  【mysql数据库】
Port = 3306                      【数据库端口】
User = root                      【mysql用户名】
Password = xxxxxx                【mysql密码】

测试链接                                                                                                          【3台服务器】

isql -v mysql

第三步、准备MYSQL 测试表和数据 

CREATE TABLE `test_cdc` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=91234 DEFAULT CHARSET=utf8mb4; 插入数据
INSERT INTO `test_cdc` VALUES (123, 'this is a update');
INSERT INTO `test_cdc` VALUES (1212, '测试 flink CDC');
INSERT INTO `test_cdc` VALUES (1234, '这是测试');
INSERT INTO `test_cdc` VALUES (11233, 'zhangfeng_1');
INSERT INTO `test_cdc` VALUES (21233, 'zhangfeng_2');
INSERT INTO `test_cdc` VALUES (31233, 'zhangfeng_3');
INSERT INTO `test_cdc` VALUES (41233, 'zhangfeng_4');
INSERT INTO `test_cdc` VALUES (51233, 'zhangfeng_5');
INSERT INTO `test_cdc` VALUES (61233, 'zhangfeng_6');
INSERT INTO `test_cdc` VALUES (71233, 'zhangfeng_7');
INSERT INTO `test_cdc` VALUES (81233, 'zhangfeng_8');
INSERT INTO `test_cdc` VALUES (91233, 'zhangfeng_9');

第四步:修改 Doris 的配置文件(每个 BE 节点都要,不用重启 BE)
在 BE 节点的 conf/odbcinst.ini,添加我们的刚才注册的的 ODBC 驱动([MySQL ODBC 
5.3.11] 红色这部分)

# Driver from the postgresql-odbc package

# Setup from the unixODBC package

[PostgreSQL]

Description = ODBC for PostgreSQL

Driver = /usr/lib/psqlodbc.so

Setup = /usr/lib/libodbcpsqlS.so

FileUsage = 1

# Driver from the mysql-connector-odbc package

# Setup from the unixODBC package

[MySQL ODBC 5.3.11] 【此处名称不允许修改写错 后面需要用到】

Description = ODBC for MySQL

Driver= /usr/lib64/libmyodbc5w.so

FileUsage = 1

# Driver from the oracle-connector-odbc package

# Setup from the unixODBC package

[Oracle 19 ODBC driver]

Description=Oracle ODBC driver for Oracle 19

Driver=/usr/lib/libsqora.so.19.1

第五步:Doris 建 Resource表

通过 ODBC_Resource 来创建 ODBC 外表,这是推荐的方式,这样 resource 可以复用。

CREATE EXTERNAL RESOURCE `mysql_5_3_11`

PROPERTIES (

"host" = "hadoop1",                                             【mysql服务器IP的hostname】

"port" = "3306",                                                    【Mysql端口】

"user" = "root",                                                     【Mysql用户名】

"password" = "XXXXX",                                       【Mysql密码】

"database" = "test",                                              【Mysql数据库】

"table" = "test_cdc",                                              【Mysql需要的外表】

"driver" = "MySQL ODBC 5.3.11", 【名称要和上面[]里的名称一致,BE的配置文件头】

"odbc_type" = "mysql",                                         【固定】

"type" = "odbc_catalog")                                       【固定】

第六步:基于 Resource 创建 Doris 外表 

CREATE EXTERNAL TABLE `test_odbc` (

`id` int NOT NULL , 【和Mysql字段相同】

`name` varchar(255) null 【和Mysql字段相同】

) ENGINE=ODBC            【固定引擎】

COMMENT "ODBC"

PROPERTIES (

"odbc_catalog_resource"="mysql_5_3_11",【名称就是 resource 的名称】

"database" = "test", 【同步的数据库】

"table" = "test_cdc"   【同步的表】

);

第七步:查询数据 ,检查Mysql数据库完全相同

第八步:测试修改Mysql数据


修改Mysql 数据库 Doris 外表数据相同

备份说明:Doris 数据库同样支持Mysql的数据库文件备份命令,mysqldump

eg:/usr/local/mysql/bin/mysqldump -u用户名 -p密码 --databases 数据库  > /home/mysqlDataBak/$(date "+%Y%m%d%H")_jjga_mydb.sql

Doris1.1.1多种异构数据源数据导入方案相关推荐

  1. 星环科技 TDS 联邦计算能力,让企业异构数据源数据合作畅通无阻

    在数据成为生产要素的今天,企业愈发需要更高效.简洁利用数据的方法来快速响应不断变化的商业和情报分析.传统方式是数据集成(ETL)后再做分析,但目前需求在变化,数据源也在变化,数据集成系统越来越庞大,导 ...

  2. 大规模异构数据并行处理系统的设计、实现与实践

    点击上方蓝字关注我们 大规模异构数据并行处理系统的设计.实现与实践 夏正勋, 罗圣美, 孙元浩, 唐剑飞, 张燕 星环信息科技(上海)有限公司,上海 200233 论文引用格式: 夏正勋, 罗圣美,等 ...

  3. 多端异构数据集成方案

    概述 多端异构,一般来说这是数据集成系统最复杂的情况,而前面部分我们将讨论多端同构场景下的做法,再逐渐延伸到文章主题部分,即多端异构的场景. 多端同构 所谓多端同构,就是终端类型可以是多种,但是使用的 ...

  4. 大数据场景下多源异构数据的实时处理分析

    随着大数据应用的发展,人们对实时数据的要求越来越高,大数据也逐渐从最初的离线数据仓库架构发展到Labmda架构,实现了离线实时更新的目标.到后来的Kappa体系结构中,Labmda体系结构的实时部分被 ...

  5. 领域最全!多传感器融合方法综述!(Camera/Lidar/Radar等多源异构数据)

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 后台回复[ECCV2022]获取ECCV2022所有自动驾驶方向论文! 自动 ...

  6. 异构数据半小时实现搜索功能,一个系统搞定

    背景 对于闲鱼这种处于高速增长期的部门来说,业务场景在快速膨胀,越来越多的业务数据对搜索能力有诉求.如果按照常规的方式为各个业务搭建独立搜索引擎服务,那么开发和维护的时间成本将是非常巨大的. 能否只用 ...

  7. MATLAB中文件的读写和数据的导入导出

    http://blog.163.com/tawney_daylily/blog/static/13614643620111117853933/ 在编写一个程序时,经常需要从外部读入数据,或者将程序运行 ...

  8. 多源异构数据_构建数字孪生城市的CIM数据平台哪家强?

    文/王颖初 数字城市系统建设中数据领域存在的问题 随着经济的发展和信息化水平的飞速提升,数字城市的系统建设也日益普及.数字城市涉及规划.建设.城市管理.国土.交通.水利.安防.人防.环境保护.文物保护 ...

  9. excel导入mysql命令行_使用命令行将Excel数据表导入Mysql中的方法小结

    从Excel数据表导入MySQL,已经做过好几次了,但每次都会碰到各种问题:invalid utf8 character string, data too long, ...,浪费了不少时间 为了提高 ...

最新文章

  1. Hadoop详解(一):Hadoop简介
  2. 将格式化的日期字符串转换为Unix时间戳(php)
  3. 【Vue学习第三天】组件的使用
  4. 基于前后端分离实现阿里云对象存储小案例
  5. CentOS 搭建内部Yum源同步阿里Yum源
  6. 【数据结构与算法】之深入解析“石子游戏”的求解思路与算法示例
  7. java 本地方法栈_Java虚拟机栈和本地方法栈
  8. 【转】BPM与ERP,OA系统的区别和关系
  9. sort对结构体排序
  10. 简易cad导出pdf程序源码
  11. Arduino传感器实验清单
  12. 动态规划之LCS算法
  13. 关于C++ 存储类型auto、register、static、extern、mutable
  14. EXCEL多页打印保留表头
  15. ECharts关于y轴刻度调整
  16. karas报错filename = 'fine_tuned_net.h5', file descriptor = 24, errno = 28, error message = 'No space l
  17. c语言球球半径,球球大作战,源码分享
  18. 数据库和databus
  19. [感悟]做事有目标,效果会更好
  20. 02136Windows及应用【计算机公共基础习题解答】

热门文章

  1. 使用excelJs.js,导出excel,可以设置序列以及下拉框的联动
  2. 实践数据湖iceberg 第三十四课 基于数据湖icerberg的流批一体架构-流架构测试
  3. spark-面试题(含答案)
  4. Telegram Download Default Chat Wallpaper
  5. 图纸管理系统_图纸文档管理软件系统
  6. WPF入门教程系列(5)
  7. iOS之深入解析插件化架构
  8. YARN - Task, Node manager, AppMaster, Resource manager 失败时所做的处理
  9. 游戏运营的十二大组成
  10. 电视剧房前屋后剧情介绍第1-47集