title: “Apache Doris catalog” slug: /jdbc-doris-catalog keywords:
import Tabs from ‘@theme/Tabs’; import TabItem from ‘@theme/TabItem’;
Apache Gravitino provides the ability to manage Apache Doris metadata through JDBC connection.
:::caution Gravitino saves some system information in schema and table comments, like (From Gravitino, DO NOT EDIT: gravitino.v1.uid1078334182909406185)
, please don't change or remove this message. :::
You can pass to a Doris data source any property that isn't defined by Gravitino by adding gravitino.bypass.
prefix as a catalog property. For example, catalog property gravitino.bypass.maxWaitMillis
will pass maxWaitMillis
to the data source property.
You can check the relevant data source configuration in data source properties for more details.
Besides the common catalog properties, the Doris catalog has the following properties:
Configuration item | Description | Default value | Required | Since Version |
---|---|---|---|---|
jdbc-url | JDBC URL for connecting to the database. For example, jdbc:mysql://localhost:9030 | (none) | Yes | 0.5.0 |
jdbc-driver | The driver of the JDBC connection. For example, com.mysql.jdbc.Driver . | (none) | Yes | 0.5.0 |
jdbc-user | The JDBC user name. | (none) | Yes | 0.5.0 |
jdbc-password | The JDBC password. | (none) | Yes | 0.5.0 |
jdbc.pool.min-size | The minimum number of connections in the pool. 2 by default. | 2 | No | 0.5.0 |
jdbc.pool.max-size | The maximum number of connections in the pool. 10 by default. | 10 | No | 0.5.0 |
jdbc.pool.max-size | The maximum number of connections in the pool. 10 by default. | 10 | No | 0.5.0 |
replication_num | The number of replications for the table. If not specified and the number of backend servers less than 3, then the default value is 1; If not specified and the number of backend servers greater or equals to 3, the default value (3) in Doris server will be used. For more, please see the doc | 1 or 3 | No | 0.6.0-incubating |
Before using the Doris Catalog, you must download the corresponding JDBC driver to the catalogs/jdbc-doris/libs
directory. Gravitino doesn't package the JDBC driver for Doris due to licensing issues.
The Doris catalog includes driver version compatibility checks for datetime precision calculation:
null
with a warning logThis limitation affects the following datetime types:
DATETIME(p)
- datetime precisionWhen using an unsupported driver version, the system will:
null
for precision calculations to avoid incorrect resultsExample warning log:
WARN: MySQL driver version mysql-connector-java-8.0.11 is below 8.0.16, columnSize may not be accurate for precision calculation. Returning null for DATETIME type precision. Driver version: mysql-connector-java-8.0.11
Recommended driver versions:
mysql-connector-java-8.0.16
or higherRefer to Manage Relational Metadata Using Gravitino for more details.
Please refer to Manage Relational Metadata Using Gravitino for more details.
Gravitino Type | Doris Type |
---|---|
Boolean | Boolean |
Byte | TinyInt |
Short | SmallInt |
Integer | Int |
Long | BigInt |
Float | Float |
Double | Double |
Decimal | Decimal |
Date | Date |
Timestamp[(p)] | Datetime[(p)] |
VarChar | VarChar |
FixedChar | Char |
String | String |
Doris doesn‘t support Gravitino Fixed
Timestamp_tz
IntervalDay
IntervalYear
Union
UUID
type. The data types other than those listed above are mapped to Gravitino’s Unparsed Type that represents an unresolvable data type since 0.5.0.
:::note Gravitino can not load Doris array
, map
and struct
type correctly, because Doris doesn't support these types in JDBC. :::
Unsupported for now.
Supports PRIMARY_KEY
Please be aware that the index can only apply to a single column.
{ "indexes": [ { "indexType": "primary_key", "name": "PRIMARY", "fieldNames": [["id"]] } ] }
Index[] indexes = new Index[] { Indexes.of(IndexType.PRIMARY_KEY, "PRIMARY", new String[][]{{"id"}}) }
The Doris catalog supports partitioned tables. Users can create partitioned tables in the Doris catalog with specific partitioning attributes. It is also supported to pre-assign partitions when creating Doris tables. Note that although Gravitino supports several partitioning strategies, Apache Doris inherently only supports these two partitioning strategies:
RANGE
LIST
:::caution The fieldName
specified in the partitioning attributes must be the name of columns defined in the table. :::
Users can also specify the distribution strategy when creating tables in the Doris catalog. Currently, the Doris catalog supports the following distribution strategies:
HASH
RANDOM
For the RANDOM
distribution strategy, Gravitino uses the EVEN
to represent it. More information about the distribution strategy defined in Gravitino can be found here.
Please refer to Manage Relational Metadata Using Gravitino for more details.
Gravitino supports these table alteration operations:
RenameTable
UpdateComment
AddColumn
DeleteColumn
UpdateColumnType
UpdateColumnPosition
UpdateColumnComment
SetProperty
Please be aware that: