1 - Отсюда вопрос, есть ли способ от Kafka connect автоматически создавать Kstream или Ktable?
Нет, вам нужно сделать это вручную. Но если вы используете Avro, тогда это просто утверждение:
CREATE STREAM foo WITH (KAFKA_TOPIC='bar', VALUE_FORMAT='AVRO');
2 - Кафка подключается как понятие схемы, как это связано со структурой (схемой) и форматом Kstream / KTable (json / avro / delimited)?
KSQL Stream (или Таблица) = Тема Kafka плюс Схема.
Итак, у вас есть тема Kafka (загружаемая, например, Kafka Connect), и вам нужна схема. Лучше всего просто использовать Avro при создании данных (например, из Kafka Connect), потому что тогда схема существует в реестре схем, и KSQL может использовать ее автоматически.
Если вы хотите использовать JSON или [ shudder ] с разделителями, то вы должны предоставить схему в KSQL при объявлении потока / таблицы. Вместо приведенного выше утверждения у вас будет что-то вроде
CREATE STREAM foo (COL1 INT, COL2 VARCHAR, COL3 INT, COL4 STRUCT<S1 INT,S2 VARCHAR>)
WITH (KAFKA_TOPIC='bar_json',VALUE_FORMAT='JSON');
3 - Если Kafka connect не может создавать Kstream и KTable напрямую, может ли KSQL выполнять объединение по темам, которые Kafka Connect создает напрямую?
KSQL может объединять потоки и таблицы, да. Поток / таблица - это просто тема Кафки со схемой.
Сможет ли он интерпретировать структуру данных в этих темах (т. Е. Сгенерированную схему kafka connect), выполнить соединение с ней и сделать результат доступным как Kstream?
Да. Схема предоставляется Kafka Connect, и если вы используете Avro, она «просто работает». Если вы используете JSON, вам нужно вручную ввести схему, как показано выше.
Вывод соединения KSQL - это тема Kafka, например
CREATE STREAM A WITH (KAFKA_TOPIC='A', VALUE_FORMAT='AVRO');
CREATE TABLE B WITH (KAFKA_TOPIC='B', VALUE_FORMAT='AVRO', KEY='ID');
CREATE STREAM foobar AS
SELECT A.*, B.* FROM
A LEFT OUTER JOIN B ON A.ID = B.ID;
4 - Если все мои предположения неверны, может кто-нибудь дать мне шаг, который повлечет за собой моя проблема в терминах KSQL / Kafka-stream / Kafka-connect?
Я не думаю, что ваши предположения неверны. Используйте Kafka Connect + KSQL и используйте Avro :)
Эти ссылки могут помочь вам в дальнейшем: