1. 通过外部表同步数据到Doris
2. Doris数据导入总结
进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道,获取高质量博客内容!
宝子们订阅、点赞、收藏不迷路!抓紧订阅专题!
Doris 可以创建外部表。创建完成后,可以通过 SELECT 语句直接查询外部表的数据,也可以通过 INSERT INTO SELECT 的方式导入外部表的数据。
Doris 外部表目前支持的数据源包括:MYSQL、Oracle、PostgreSQL、SQLServer、HIVE、ICEBERG 、HUDI、ElasticSearch,主要通过 ENGINE 类型来标识是哪种类型的外部表。具体使用方式可以参考官网:CREATE-EXTERNAL-TABLE - Apache Doris
特别需要注意的一点是Doris中官方提供的安装包中默认不支持MySQL 外表,主要原因是底层依赖库不兼容问题,如果想要支持MySQL外表需要手动进行编译Doris时加入“WITH_MYSQL=1 ”选项。如果想要通过Doris读取MySQL中的数据官方建议使用JDBC方式来读取,具体可以参考后续章节中JDBC Catalog部分。
这里以在Doris中创建Hive 外表方式来演示Doris通过外部表同步数据到Doris操作。
1)启动HDFS集群和Hive,创建Hive表并加载数据
#node3~node5启动zookeeper
[root@node3 ~]# zkServer.sh start
[root@node4 ~]# zkServer.sh start
[root@node5 ~]# zkServer.sh start
#node1 启动HDFS
[root@node1 ~]# start-all.sh
#node1 Hive 服务端启动metastore ,node3节点启动Hive客户端并设置本地模式
[root@node1 ~]# hive --service metastore &
[root@node3 ~]# hive
hive> set hive.exec.mode.local.auto=true;
#创建Hive表并插入数据
hive> create table persons (id int,name string,age int,score int) row format delimited fields terminated by '\t';
hive> insert into persons values (1,'zs',18,100),(2,'ls',19,200),(3,'ww',20,300);
#查询表 persons数据
hive> select * from persons;
OK
1 zs 18 100
2 ls 19 200
3 ww 20 300
2)在Doris中创建Hive 外部表
CREATE EXTERNAL TABLE example_db.hive_doris_tbl2
(
id INT,
name varchar(255),
age INT,
score INT
)
ENGINE=hive
properties
(
"dfs.nameservices"="mycluster",
"dfs.ha.namenodes.mycluster"="node1,node2",
"dfs.namenode.rpc-address.mycluster.node1"="node1:8020",
"dfs.namenode.rpc-address.mycluster.node2"="node2:8020",
"dfs.client.failover.proxy.provider.mycluster" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
"database" = "default",
"table" = "persons",
"hive.metastore.uris" = "thrift://node1:9083"
);
3)查询Doris MySQL 外部表数据
mysql> select * from hive_doris_tbl2;
+------+------+------+-------+
| id | name | age | score |
+------+------+------+-------+
| 1 | zs | 18 | 100 |
| 2 | ls | 19 | 200 |
| 3 | ww | 20 | 300 |
+------+------+------+-------+
4)在Doris中创建新的表,并通过insert into 方式同步hive外表数据
#doris 创建新表
create table doris_tbl(
id int,
name string,
age int
)
ENGINE = olap
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(`id`) BUCKETS 8;
#通过insert into 方式同步Hive外表数据
mysql> insert into doris_tbl select id ,name ,age from hive_doris_tbl2 limit 100;
#查询Doris 新表数据
mysql> select * from doris_tbl;
+------+------+------+
| id | name | age |
+------+------+------+
| 2 | ls | 19 |
| 3 | ww | 20 |
| 1 | zs | 18 |
+------+------+------+
个人主页:IT贫道_Apache Doris,Kerberos安全认证,随笔-CSDN博客 主页包含各种IT体系技术订阅:拥抱独家专题,你的订阅将点燃我的创作热情!
点赞:赞同优秀创作,你的点赞是对我创作最大的认可!
⭐️ 收藏:收藏原创博文,让我们一起打造IT界的荣耀与辉煌!
✏️评论:留下心声墨迹,你的评论将是我努力改进的方向!