External table
-
Начиная с версии 1.5.0, мы рекомендуем использовать каталоги для запроса данных из Hive, Iceberg и Hudi. См. Hive catalog, Iceberg catalog и Hudi catalog.
-
Начиная с версии 1.5.0, мы рекомендуем использовать JDBC catalog для запроса данных из MySQL и PostgreSQL и использовать Elasticsearch catalog для запроса данных из Elasticsearch.
-
Функция External Table была разработана для помощи в загрузке данных в Selena, а НЕ для выполнения эффективных запросов к внешним системам в качестве обычной операции. Более производительным решением была бы загрузка данных в Selena.
Selena поддерживает доступ к другим источникам данных с помощью внешних таблиц. Внешние таблицы создаются на основе таблиц данных, которые хранятся в других источниках данных. Selena хранит только метаданные таблиц данных. Вы можете использовать внешние таблицы для прямого запроса данных в других источниках данных. В настоящее время, за исключением внешней таблицы Selena, все остальные внешние таблицы устарели. Вы можете только записывать данные из другого кластера Selena в текущий кластер Selena. Вы не можете читать данные из него. Для источников данных, отличных от Selena, вы можете только читать данные из этих источников данных.
Начиная с версии 1.5.0, Selena предоставляет функцию Data Cache, которая ускоряет запросы горячих данных к внешним источникам данных. Для получения дополнительной информации см. Data Cache.
Внешняя таблица Selena
Начиная с Selena 1.19, Selena позволяет использовать внешнюю таблицу Selena для записи данных из одного кластера Selena в другой. Это обеспечивает разделение чтения и записи и обеспечивает лучшую изоляцию ресурсов. Сначала вы можете создать целевую таблицу в целевом кластере Selena. Затем в исходном кластере Selena вы можете создать внешнюю таблицу Selena, которая имеет ту же схему, что и целевая таблица, и указать информацию о целевом кластере и таблице в поле PROPERTIES.
Данные могут быть записаны из исходного кластера в целевой кластер с помощью оператора INSERT INTO для записи во внешнюю таблицу Selena. Это может помочь достичь следующих целей:
- Синхронизация данных между кластерами Selena.
- Разделение чтения и записи. Данные записываются в исходный кластер, а изменения данных из исходного кластера синхронизируются с целевым кластером, который предоставляет службы запросов.
Следующий код показывает, как создать целевую таблицу и внешнюю таблицу.
# Создание целевой таблицы в целевом кластере Selena.
CREATE TABLE t
(
k1 DATE,
k2 INT,
k3 SMALLINT,
k4 VARCHAR(2048),
k5 DATETIME
)
ENGINE=olap
DISTRIBUTED BY HASH(k1);
# Создание внешней таблицы в исходном кластере Selena.
CREATE EXTERNAL TABLE external_t
(
k1 DATE,
k2 INT,
k3 SMALLINT,
k4 VARCHAR(2048),
k5 DATETIME
)
ENGINE=olap
DISTRIBUTED BY HASH(k1)
PROPERTIES
(
"host" = "127.0.0.1",
"port" = "9020",
"user" = "user",
"password" = "passwd",
"database" = "db_test",
"table" = "t"
);
# Запись данных из исходного кластера в целевой кластер путем записи данных во внешнюю таблицу Selena. Второй оператор рекомендуется для производственной среды.
insert into external_t values ('2020-10-11', 1, 1, 'hello', '2020-10-11 10:00:00');
insert into external_t select * from other_table;
Параметры:
-
EXTERNAL: Это ключевое слово указывает, что создаваемая таблица является внешней таблицей.
-
host: Этот параметр указывает IP-адрес узла Leader FE целевого кластера Selena.
-
port: Этот параметр указывает RPC-порт узла FE целевого кластера Selena.
примечаниеЧтобы обеспечить доступ исходного кластера, которому принадлежат внешние таблицы Selena, к целевому кластеру Selena, вы должны настроить свою сеть и брандмауэр для разрешения доступа к следующим портам:
- RPC-порт узла FE. См.
rpc_portв файле конфигурации FE fe/fe.conf. RPC-порт по умолчанию —9020. - bRPC-порт узла BE. См.
brpc_portв файле конфигурации BE be/be.conf. bRPC-порт по умолчанию —8060.
- RPC-порт узла FE. См.
-
user: Этот параметр указывает имя пользователя, используемое для доступа к целевому кластеру Selena.
-
password: Этот параметр указывает пароль, используемый для доступа к целевому кластеру Selena.
-
database: Этот пара метр указывает базу данных, к которой принадлежит целевая таблица.
-
table: Этот параметр указывает имя целевой таблицы.
Следующие ограничения применяются при использовании внешней таблицы Selena:
- Вы можете выполнять только команды INSERT INTO и SHOW CREATE TABLE для внешней таблицы Selena. Другие методы записи данных не поддерживаются. Кроме того, вы не можете запрашивать данные из внешней таблицы Selena или выполнять DDL-операции с внешней таблицей.
- Синтаксис создания внешней таблицы такой же, как и создание обычной таблицы, но имена столбцов и другая информация во внешней таблице должны быть такими же, как в целевой таблице.
- Внешняя таблица синхронизирует метаданные таблицы из целевой таблицы каждые 10 секунд. Если DDL-операция выполняется с целевой таблицей, может быть задержка синхронизации данных между двумя таблицами.
(Устарело) Внешняя таблица для JDBC-совместимой базы данных
Начиная с версии 1.5.0, Selena предоставляет внешние таблицы для запроса JDBC-совместимых баз данных. Таким образом, вы можете анализировать данные таких баз данных с невероятной скоростью без необходимости импорта данных в Selena. В этом разделе описывается, как создать внешнюю таблицу в Selena и запрашивать данные в JDBC-совместимых базах данных.
Предварительные требования
Перед использованием внешней таблицы JDBC для запроса данных убедитесь, что FE и BE имеют доступ к URL загрузки драйвера JDBC. URL загрузки указывается параметром driver_url в операторе, используемом для создания ресурса JDBC.