Доступ к ClickHouse через PXF

1. Настройка окружения

Программное обеспечение Версия
YMatrix MatrixDB 6.7.1+enterprise
ClickHouse 26.2.5.45
PXF pxf-matrixdb4-6.5.0-1.el7.x86_64

2. Примеры использования

1. Предварительные требования

В YMatrix должен быть настроен и инициализирован PXF, а служба PXF должна работать на каждом хосте segment.
Если PXF ещё не настроен, ознакомьтесь с инструкциями по инициализации в разделе PXF Installation.

  • Скачайте драйвер ClickHouse, соответствующий вашей версии.
    Вы можете загрузить его с помощью wget или передать вручную.

  • Инициализируйте PXF:

    pxf cluster init
  • Скопируйте JDBC-драйвер в каталог библиотек PXF на всех узлах:

    mv clickhouse-jdbc-0.4.6-shaded.jar /usr/local/pxf-matrixdb4/lib

2. Тестирование доступа

2.1 Создание базы данных и таблицы в ClickHouse

  • Создайте базу данных:

    CREATE DATABASE IF NOT EXISTS anadw;
  • Создайте таблицу:

    CREATE TABLE IF NOT EXISTS anadw.test_table
    (
      esn String,
      trace_datetime String,
      trace_timestamp Int64,
      latitude Float64,
      longitude Float64,
      dt String
    )
    ENGINE = MergeTree
    ORDER BY (dt, esn, trace_timestamp);

2.2 Настройка окружения в YMatrix

  • Создайте сервер:

    CREATE SERVER clickhouse_server
    FOREIGN DATA WRAPPER jdbc_pxf_fdw
    OPTIONS (
      db_url 'jdbc:clickhouse://172.16.100.29:8123/anadw?compress=0&decompress=0',
      jdbc_driver 'com.clickhouse.jdbc.ClickHouseDriver'
    );
  • Создайте отображение пользователя:

    CREATE USER MAPPING FOR mxadmin
    SERVER clickhouse_server
    OPTIONS (
      "user" 'pxf_user',
      password ''
    );
  • Создайте внешнюю таблицу:

    CREATE FOREIGN TABLE dm.test_table (
      esn text,
      trace_datetime text,
      trace_timestamp bigint,
      latitude double precision,
      longitude double precision,
      dt text
    )
    SERVER clickhouse_server
    OPTIONS (
      resource 'anadw.test_table'
    );

Image 1

3. Результаты тестирования

Проверка прошла успешно; результаты совпадают.

  • На стороне YMatrix: Image 2

  • На стороне ClickHouse: Image 3

Важные замечания

Для ClickHouse существует два типа драйверов, которые необходимо чётко различать:

  • HTTP-драйвер: обычно использует порт 8123.
  • Native-драйвер: обычно использует порт 9000.