create external table
的方式创建一个外部数据目录中的表的映射,或通过 create external database
的方式映射一个外部数据目录中的 Database。 如果外部数据目录中的 Database 或 Table 非常多,则需要用户手动进行一一映射,使用体验不佳。SHOW DATABASES
、USE DB
等命令查看和切换数据库。用户可以通过 SWITCH 命令切换 Catalog。如:SWITCH internal;SWITCH hive_catalog;
SHOW DATABASES
,USE DB
等命令查看和切换对应 Catalog 中的 Database。Doris 会自动通过 Catalog 中的 Database 和 Table。用户可以像使用 Internal Catalog 一样,对 External Catalog 中的数据进行查看和访问。当前,Doris 只支持对 External Catalog 中的数据进行只读访问。CREATE CATALOG hive PROPERTIES ('type'='hms','hive.metastore.uris' = 'thrift://172.21.0.1:7004');
SHOW CATALOGS
命令查看 Catalog:mysql> SHOW CATALOGS;+-----------+-------------+----------+| CatalogId | CatalogName | Type |+-----------+-------------+----------+| 10024 | hive | hms || 0 | internal | internal |+-----------+-------------+----------+
SWITCH
命令切换到 Hive Catalog,并查看其中的数据库:mysql> SWITCH hive;Query OK, 0 rows affected (0.00 sec)mysql> SHOW DATABASES;+-----------+| Database |+-----------+| default || random || ssb100 || tpch1 || tpch100 || tpch1_orc |+-----------+
mysql> USE tpch100;Database changedmysql> SHOW TABLES;+-------------------+| Tables_in_tpch100 |+-------------------+| customer || lineitem || nation || orders || part || partsupp || region || supplier |+-------------------+
mysql> DESC lineitem;+-----------------+---------------+------+------+---------+-------+| Field | Type | Null | Key | Default | Extra |+-----------------+---------------+------+------+---------+-------+| l_shipdate | DATE | Yes | true | NULL | || l_orderkey | BIGINT | Yes | true | NULL | || l_linenumber | INT | Yes | true | NULL | || l_partkey | INT | Yes | true | NULL | || l_suppkey | INT | Yes | true | NULL | || l_quantity | DECIMAL(15,2) | Yes | true | NULL | || l_extendedprice | DECIMAL(15,2) | Yes | true | NULL | || l_discount | DECIMAL(15,2) | Yes | true | NULL | || l_tax | DECIMAL(15,2) | Yes | true | NULL | || l_returnflag | TEXT | Yes | true | NULL | || l_linestatus | TEXT | Yes | true | NULL | || l_commitdate | DATE | Yes | true | NULL | || l_receiptdate | DATE | Yes | true | NULL | || l_shipinstruct | TEXT | Yes | true | NULL | || l_shipmode | TEXT | Yes | true | NULL | || l_comment | TEXT | Yes | true | NULL | |+-----------------+---------------+------+------+---------+-------+
mysql> SELECT l_shipdate, l_orderkey, l_partkey FROM lineitem limit 10;+------------+------------+-----------+| l_shipdate | l_orderkey | l_partkey |+------------+------------+-----------+| 1998-01-21 | 66374304 | 270146 || 1997-11-17 | 66374304 | 340557 || 1997-06-17 | 66374400 | 6839498 || 1997-08-21 | 66374400 | 11436870 || 1997-08-07 | 66374400 | 19473325 || 1997-06-16 | 66374400 | 8157699 || 1998-09-21 | 66374496 | 19892278 || 1998-08-07 | 66374496 | 9509408 || 1998-10-27 | 66374496 | 4608731 || 1998-07-14 | 66374592 | 13555929 |+------------+------------+-----------+
mysql> SELECT l.l_shipdate FROM hive.tpch100.lineitem l WHERE l.l_partkey IN (SELECT p_partkey FROM internal.db1.part) LIMIT 10;+------------+| l_shipdate |+------------+| 1993-02-16 || 1995-06-26 || 1995-08-19 || 1992-07-23 || 1998-05-23 || 1997-07-12 || 1994-03-06 || 1996-02-07 || 1997-06-01 || 1996-08-23 |+------------+
catalog.database.table
这种全限定的方式标识一张表,如:internal.db1.part
。catalog
和 database
可以省略,缺省使用当前 SWITCH 和 USE 后切换的 Catalog 和 Database。mysql> SWITCH internal;Query OK, 0 rows affected (0.00 sec)mysql> USE db1;Database changedmysql> INSERT INTO part SELECT * FROM hive.tpch100.part limit 1000;Query OK, 1000 rows affected (0.28 sec){'label':'insert_212f67420c6444d5_9bfc184bf2e7edb8', 'status':'VISIBLE', 'txnId':'4'}
UNION
, INTERVAL
等。Doris 会将列类型映射为 UNSUPPORTED 类型。对于 UNSUPPORTED 类型的查询,示例如下:k1 INT,k2 INT,k3 UNSUPPORTED,k4 INT
select * from table; // Error: Unsupported type 'UNSUPPORTED_TYPE' in '`k3`select * except(k3) from table; // Query OK.select k1, k3 from table; // Error: Unsupported type 'UNSUPPORTED_TYPE' in '`k3`select k1, k4 from table; // Query OK.
include_database_list
和 exclude_database_list
可以指定需要同步的数据库。include_database_list
:支持只同步指定的多个database,以','分隔。默认为'',同步所有database。db名称是大小写敏感的。exclude_database_list
:支持指定不需要同步的多个database,以','分割。默认为'',即不做任何过滤,同步所有database。db名称是大小写敏感的。include_database_list
和 exclude_database_list
有重合的database配置时,exclude_database_list
会优先生效。only_specified_database
搭配使用,详情请参见 JDBC Catalog。事件 | 事件行为和对应的动作 |
CREATE DATABASE | 在对应数据目录下创建数据库。 |
DROP DATABASE | 在对应数据目录下删除数据库。 |
ALTER DATABASE | 此事件的影响主要有更改数据库的属性信息,注释及默认存储位置等,这些改变不影响 doris 对外部数据目录的查询操作,因此目前会忽略此 event。 |
CREATE TABLE | 在对应数据库下创建表。 |
DROP TABLE | 在对应数据库下删除表,并失效表的缓存。 |
ALTER TABLE | 如果是重命名,先删除旧名字的表,再用新名字创建表,否则失效该表的缓存。 |
ADD PARTITION | 在对应表缓存的分区列表里添加分区。 |
DROP PARTITION | 在对应表缓存的分区列表里删除分区,并失效该分区的缓存。 |
ALTER PARTITION | 如果是重命名,先删除旧名字的分区,再用新名字创建分区,否则失效该分区的缓存。 |
enable_hms_events_incremental_sync
:是否开启元数据自动增量同步功能,默认关闭。hms_events_polling_interval_ms
:读取 event 的间隔时间,默认值为 10000,单位:毫秒。hms_events_batch_size_per_rpc
:每次读取 event 的最大数量,默认值为 500。<property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property><property><name>hive.metastore.dml.events</name><value>true</value></property><property><name>hive.metastore.transactional.event.listeners</name><value>org.apache.hive.hcatalog.listener.DbNotificationListener</value></property>
enable_hms_events_incremental_sync
设置为 true,重启 FE 节点,无需重启之前或之后再手动刷新元数据。metadata_refresh_interval_sec
,以秒为单位,若在创建 Catalog 时设置了该参数,FE 的master 节点会根据参数值定时刷新该 Catalog。目前支持三种类型:-- 设置catalog刷新间隔为20秒CREATE CATALOG es PROPERTIES ("type"="es","hosts"="http://127.0.0.1:9200","metadata_refresh_interval_sec"="20");
本页内容是否解决了您的问题?