首页 > 数据库 > 数据库开发技术 > Doris Catalog入门学习
在我们使用 Doris 时,有些数据存储在 HDFS,MYSQL 或者 Greenplum 中,那我们怎么在Doris中去使用这些数据呢?
一种办法是可以将数据导入到 Doris 中来使用,这种方式一定可以解决我们的问题。
但是有时候这些数据作为维度数据,数据量比较小,只是偶尔用一下,导入太麻烦了,我们可以直接在 Doris 中直接查询这些数据吗?
答案是当然可以的,这就是我们接下来要说的 Catalog,Doris 很贴心的为我们提供了很多 Catalog,使得我们可以很方便的查询外部系统的数据,并且我们这些数据之间还可以进行join操作,实现多源数据的联邦查询。
我们以几个常见的 Catalog 来说一下怎么使用吧,便于大家快速理解和入门。官网文档很详细了,使用方法类似,用到了直接找官网文档也是很方便的。
首先第一个要分享的就是 Hive catalog,这个是比较常见的,在离线数仓分析中,基本离不开 Hive。
在没有使用 Doris 之前,我们要查询 Hive 数据,可以写 HQL 语句,这种效率是比较低的;也可以使用 Flink 或者 Spark 来做数据分析,这种方法需要对 Flink 或 Spark 编程比较熟悉,使用门槛高。
使用 Doris 之后,我们可以将 HDFS 数据导入 Doris,然后使用 Mysql 协议的 SQL 语句查询数据,速度是非常快的;也可以使用 Hive Catalog,使用 SQL 语句直接查询 Hive 的数据,相较于传统方式,使用门槛低且效率高。
好了,那就开始吧。
首先 Doris 环境必须得有,没有 Doris 环境还玩个啥呀。除了 Doris 环境,还需要安装 Hadoop 和 Hive。这些都具备之后,在 MYSQL 客户端中连接上 Doris,执行使用命令即可创建我们的 Hive Catalog。
CREATE CATALOG hive PROPERTIES (
'type'='hms',
'hive.metastore.uris' = 'thrift://metastore_ip:metastore_port'
);
CREATE CATALOG hive PROPERTIES (
'type'='hms',
'hive.metastore.uris' = 'thrift://metastore_ip:metastore_port',
'hadoop.username' = 'hive',
'dfs.nameservices'='ns',
'dfs.ha.namenodes.ns'='nn1,nn2',
'dfs.namenode.rpc-address.ns.nn1'='ip1:8020',
'dfs.namenode.rpc-address.ns.nn2'='ip2:8020',
'dfs.client.failover.proxy.provider.ns'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider');
我们可以通过如下命令查看创建的 Hive Catalog:
show catalogs;
| CatalogId | CatalogName | Type | IsCurrent |
| 13089 | hive | hms | |
| 0 | internal | internal | yes |
创建完成之后,怎么使用呢?我们可以使用如下命令切换到 Hive Catalog:
switch hive;
切换到 Hive Catalog 之后,就可以使用 sql 去查询 hive 了。
# 查询数据库
show databases;
# 使用数据库
use db_name;
# 查询库下的表
show tables;
# 查询表数据
select * from table_name;
# 查询表结构
show create table table_name;
如果不想敲这么多命令,也可以像这样使用:
show tables from hive.demo;
select count(*) ct from hive.demo.test_tbl;
既然可以查询 Hive 的数据,那就可以使用 insert into 语句将 Hive 数据导入 Doris。我们需要先创建一个 Doris 表,然后通过 insert into doris_tbl select * from hive_tbl 即可将 Hive 数据导入 Doris。
在旧版本的 Doris 中,我们可以通过创建外表的方式可以查询 JDBC 数据,新版中建议使用 JDBC Catalog的方式。
以我们常见的 Mysql 为例吧,可以通过如下步骤创建外表:
CREATE CATALOG mysql
PROPERTIES (
"type"="jdbc",
"user"="demo",
"password"="demo",
"jdbc_url" = "jdbc:mysql://ip:port/demo",
"driver_url" = "mysql-connector-java-8.0.30.jar",
"driver_class" = "com.mysql.cj.jdbc.Driver"
);
然后就可以使用 mysql 语法查询 mysql 数据了:
show databases from mysql;
show tables from mysql.demo;
select * from mysql.demo.t_ds_user limit 1;
由于 Greenplum 是基于 Postgrepsql的,GreenPlum 和 Postgresql 都可以使用 postgresql 的驱动:
CREATE CATALOG gp
PROPERTIES (
"type"="jdbc",
"user"="demo",
"password"="demo",
"jdbc_url" = "jdbc:postgresql://ip:5432/demo",
"driver_url" = "postgresql-42.5.1.jar",
"driver_class" = "org.postgresql.Driver"
);
看完整个操作过程,原来 Doris 的Catalog,还可以这么简单,看来Doris的开发者们确实很贴心,让我们用起来简单,维护也简单,怪不得Doris深受广大用户青睐呢,哈哈。
Doris 官网提供了很详细的文档,也提供了很多其他组件的 Catalog,有兴趣可以直达官网:https://doris.apache.org/zh-CN/docs/lakehouse/multi-catalog。
往期推荐
原文作者:毛毛小妖的笔记;如有侵权,请联系管理员删除。