doris通过外部表同步数据
一、doris 1.2.5版本支持
参考:https://pn7oj6yotr.feishu.cn/docx/CUfldzlYqo8nyDxHyrzc1fZGnVg 4.4小节
Doris 可以创建外部表。创建完成后,可以通过 SELECT 语句直接查询外部表的数据,也可以通过 INSERT INTO SELECT 的方式导入外部表的数据。
Doris 外部表目前支持的数据源包括:MySQL,Oracle,Hive,PostgreSQL,SQLServer,Iceberg,ElasticSearch
4.4.1 整体语法
CREATE [EXTERNAL] TABLE table_name ( col_name col_type [NULL | NOT NULL] [COMMENT "comment"]
) ENGINE=HIVE
[COMMENT "comment"]
PROPERTIES (
-- 我要映射的hive表在哪个库里面
-- 映射的表名是哪一张
-- hive的元数据服务地址'property_name'='property_value', ...
);
4.4.2 使用示例
完成在 Doris 中建立 Hive 外表后,除了无法使用 Doris 中的数据模型(rollup、预聚合、物化视图等)外,与普通的 Doris OLAP 表并无区别
•
在Hive 中创建一个测试用表:
CREATE TABLE `hive_doris` ( `id` int, `name` string, `age` int
) stored as orc;insert into doris_table values (1,'zss',18);
insert into doris_table values (2,'lss',20);
insert into doris_table values (3,'ww',25);
Doris 中创建外部表
CREATE EXTERNAL TABLE `hive_user_info` ( `id` int, `name` varchar(10), `age` int
) ENGINE=HIVE
PROPERTIES (
'hive.metastore.uris' = 'thrift://linux01:9083',
'database' = 'test',
'table' = 'hive_doris'
);
- 直接查询外部表
外部表创建好后,就可以直接在doris中对这个外部表进行查询了
直接查询外部表,无法利用到doris自身的各种查询优化机制!
select * from hive_user_info;
- 将数据从外部表导入内部表
数据从外部表导入内部表后,就可以利用doris自身的查询优势了!
假设要导入的目标内部表为: doris_user_info (需要提前创建好哦!!)
CREATE TABLE IF NOT EXISTS doris_user_info
(id INT,name VARCHAR(50),age TINYINT
)
unique key(id)
DISTRIBUTED BY HASH(id) BUCKETS 3;-- 就是用sql查询,从外部表中select出数据后,insert到内部表即可
insert into doris_user_info
select*
from hive_user_info;
注意:
Hive 表 Schema 变更不会自动同步,需要在 Doris 中重建 Hive 外表。
当前 Hive 的存储格式仅支持 Text,Parquet 和 ORC 类型
二、doris 2.1.7 不支持hive外部表
调研过程:
1、使用agc用户,进入hive , use default;建表,插入数据


2、doris中创建外部表

