JDBC catalog
Selena поддерживает JDBC catalogs начиная с версии 1.5.0.
JDBC catalog — это тип external catalog, который позволяет запрашивать данные из источников данных, доступных через JDBC, без необходимости их загрузки.
Также вы можете напрямую преобразовывать и загружать данные из источников данных JDBC, испо льзуя INSERT INTO на основе JDBC catalogs.
JDBC catalogs поддерживают MySQL и PostgreSQL начиная с версии 1.5.0, Oracle и SQLServer с версий 3.2.9 и 3.3.1, а также ClickHouse (экспериментально) с версии 3.3.0.
Предварительные требования
- FE и BE или CN в вашем кластере Selena могут загружать JDBC-драйвер по URL-адресу загрузки, указанному в параметре
driver_url. JAVA_HOMEв файле $BE_HOME/bin/start_be.sh на каждом узле BE или CN правильно настроен как путь к среде JDK, а не к среде JRE. Например, вы можете настроитьexport JAVA_HOME = <JDK_absolute_path>. Эту конфигурацию необходимо добавить в начало скрипта и перезапустить BE или CN, чтобы конфигурация вступила в силу.
Создание JDBC catalog
Синтаксис
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES ("key"="value", ...)
Параметры
catalog_name
Имя JDBC catalog. Соглашения об именовании следующие:
- Имя может содержать буквы, цифры (0-9) и символы подчеркивания (_). Оно должно начинаться с буквы.
- Имя чувствительно к регистру и не может превышать 1023 символа в длину.
comment
Описание JDBC catalog. Этот параметр является необязательным.
PROPERTIES
Свойства JDBC Catalog. PROPERTIES должен включать следующие параметры:
| Параметр | Описание |
|---|---|
| type | Тип ресурса. Установите з начение jdbc. |
| user | Имя пользователя, используемое для подключения к целевой базе данных. |
| password | Пароль, используемый для подключения к целевой базе данных. |
| jdbc_uri | URI, который JDBC-драйвер использует для подключения к целевой базе данных. Для MySQL URI имеет формат "jdbc:mysql://ip:port". Для PostgreSQL URI имеет формат "jdbc:postgresql://ip:port/db_name". Дополнительная информация: PostgreSQL. |
| driver_url | URL-адрес загрузки JAR-пакета JDBC-драйвера. Поддерживается HTTP URL или file URL, например, https://repo1.maven.org/maven2/org/postgresql/postgresql/42.3.3/postgresql-42.3.3.jar и file:///home/disk1/postgresql-42.3.3.jar.ПРИМЕЧАНИЕ Вы также можете поместить JDBC-драйвер в любой одинаковый путь на узлах FE и BE или CN и установить driver_url на этот путь, который должен быть в формате file:///<path>/to/the/driver. |
| driver_class | Имя класса JDBC-драйвера. Имена классов JDBC-драйверов распространенных движков баз данных следующие:
|
ПРИМЕЧАНИЕ
FE загружают JAR-пакет JDBC-драйвера во время создания JDBC catalog, а BE или CN загружают JAR-пакет JDBC-драйвера во время первого запроса. Время, затрачиваемое на загрузку, варьируется в зависимости от сетевых условий.
Примеры
Следующий пример создает пять различных JDBC catalogs.
-- PostgresSQL
CREATE EXTERNAL CATALOG jdbc0
PROPERTIES
(
"type"="jdbc",
"user"="postgres",
"password"="changeme",
"jdbc_uri"="jdbc:postgresql://127.0.0.1:5432/jdbc_test",
"driver_url"="https://repo1.maven.org/maven2/org/postgresql/postgresql/42.3.3/postgresql-42.3.3.jar",
"driver_class"="org.postgresql.Driver"
);
-- MySQL
CREATE EXTERNAL CATALOG jdbc1
PROPERTIES
(
"type"="jdbc",
"user"="root",
"password"="changeme",
"jdbc_uri"="jdbc:mysql://127.0.0.1:3306",
"driver_url"="https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar",
"driver_class"="com.mysql.cj.jdbc.Driver"
);
-- Oracle
CREATE EXTERNAL CATALOG jdbc2
PROPERTIES
(
"type"="jdbc",
"user"="root",
"password"="changeme",
"jdbc_uri"="jdbc:oracle:thin:@127.0.0.1:1521:ORCL",
"driver_url"="https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc10/19.18.0.0/ojdbc10-19.18.0.0.jar",
"driver_class"="oracle.jdbc.driver.OracleDriver"
);
-- SQL Server
CREATE EXTERNAL CATALOG jdbc3
PROPERTIES
(
"type"="jdbc",
"user"="root",
"password"="changeme",
"jdbc_uri"="jdbc:sqlserver://127.0.0.1:1433;databaseName=MyDatabase;",
"driver_url"="https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/12.4.2.jre11/mssql-jdbc-12.4.2.jre11.jar",
"driver_class"="com.microsoft.sqlserver.jdbc.SQLServerDriver"
);
-- ClickHouse
CREATE EXTERNAL CATALOG jdbc4
PROPERTIES
(
"type"="jdbc",
"user"="default",
"jdbc_uri"="jdbc:clickhouse://127.0.0.1:8443",
"driver_url"="file:///path/to/clickhouse-jdbc-0.4.6.jar",
"driver_class"="com.clickhouse.jdbc.ClickHouseDriver"
);
Просмотр JDBC catalogs
Вы можете использовать SHOW CATALOGS для запроса всех catalogs в текущем кластере Selena:
SHOW CATALOGS;
Вы также можете использовать SHOW CREATE CATALOG для запроса оператора создания external catalog. Следующий пример запрашивает оператор создания JDBC catalog с именем jdbc0:
SHOW CREATE CATALOG jdbc0;
Удаление JDBC catalog
Вы можете использовать DROP CATALOG для удаления JDBC catalog.
Следующий пример удаляет JDBC catalog с именем jdbc0:
DROP Catalog jdbc0;
Запрос таблицы в JDBC catalog
-
Используйте SHOW DATABASES для просмотра баз данных в вашем JDBC-совместимом кластере:
SHOW DATABASES FROM <catalog_name>; -
Используйте SET CATALOG для переключения на целевой catalog в текущей сессии:
SET CATALOG <catalog_name>;Затем используйте USE для указания активной базы данных в текущей сессии:
USE <db_name>;Или вы можете использовать USE для прямого указания активной базы данных в целевом catalog:
USE <catalog_name>.<db_name>; -
Используйте SELECT для запроса целевой таблицы в указанной базе данных:
SELECT * FROM <table_name>;
FAQ
Что делать, если возникает ошибка "Malformed database URL, failed to parse the main URL sections"?
Если вы столкнулись с такой ошибкой, URI, который вы передали в jdbc_uri, недействителен. Проверьте URI, который вы передаете, и убедитесь, что он действителен. Дополнительную информацию см. в описаниях параметров в разделе "PROPERTIES" этой темы.