Появился новый драйвер JDBC, который обеспечивает стандартный доступ к Apache Kafka через JDBC API. Текущая версия подключается к движку KSQL для выполнения запросов к Kafka, а затем движок преобразует эти запросы в запросы к Kafka.
Драйвер sql-jdbc-driver — это драйвер Java Database Connectivity (JDBC) типа 3. KSQL — это потоковый SQL-движок с открытым исходным кодом, лицензированный Apache 2.0, который обеспечивает потоковую обработку данных в Apache Kafka.
KSQL все еще находится в стадии предварительного просмотра разработчиками, и он был разработан для упрощения чтения, записи и обработки потоковых данных в реальном времени, в масштабе, с использованием SQL-подобной семантики. По словам разработчиков, использование SQL — это простой способ выразить преобразования обработки потоков в качестве альтернативы написанию приложения на языке программирования, таком как Java или Python.
KSQL поддерживает операции обработки потоков, включая агрегирование, объединение, создание окон и управление сессиями. KSQL не позволяет выполнять перебор данных; вместо этого он используется для непрерывных преобразований. В качестве примера разработчики приводят поток кликов от пользователей, а также таблицу с информацией о счетах этих пользователей, которая постоянно обновляется. KSQL позволяет моделировать этот поток кликов и таблицу пользователей и объединять их вместе, даже если поток кликов не имеет определенного размера.
Запросы, создаваемые с помощью KSQL, описываются как непрерывные запросы, преобразования, которые выполняются непрерывно по мере прохождения через них новых данных, на потоках данных в темах Kafka.
Язык действительно похож на SQL:
CREATE TABLE error_counts AS
SELECT error_code, count(*)FROM monitoring_stream
WINDOW TUMBLING (SIZE 1 MINUTE)
WHERE type = 'ERROR'
Разработчики предполагают, что его можно использовать в приложениях, где требуется преобразовать входной поток в выходной, но приложение достаточно простое, чтобы SQL-интерфейса было достаточно без необходимости использовать родной API потоков Kafka. KSQL использует Kafka’s Streams API внутри, и они разделяют одни и те же основные абстракции для обработки потоков на Kafka.
Потоки могут быть созданы из темы Kafka или получены из существующих потоков и таблиц.
CREATE STREAM pageviews
(viewtime BIGINT, userid VARCHAR, pageid VARCHAR)
WITH (kafka_topic='pageviews', value_format=’JSON’);
Хотя текущая версия драйвера JDBC просто подключается к движку KSQL и позволяет выполнять KSQL-запросы, разработчики планируют добавить автономный режим, который будет подключаться непосредственно к брокерам Kafka.