如何将MySql表数据集成到Ksql流或表?

时间:2018-10-23 07:36:43

标签: mysql apache-kafka confluent ksql

我正在尝试建立从 MySql Ksql 的数据管道。

用例:数据源是MySql。我已经在MySql中创建了一个表。

我正在使用

./bin/connect-standalone ./etc/schema-registry/connect-avro-standalone.properties  ./etc/kafka-connect-jdbc/source-quickstart-sqlite.properties 

启动独立连接器。而且工作正常。

我以主题名称(即

)开始使用消费者
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test1Category --from-beginning

当我在MySQL表中插入数据时,我也在消费者中得到了结果。 我已经使用相同的主题名称创建了KSQL Stream 。我也希望在Kstream中获得相同的结果,但是当我执行

时没有任何结果
select * from <streamName>

连接器配置--source-quickstart-mysql.properties

    name=jdbc_source_mysql
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector

key.converter=io.confluent.connect.avro.AvroConverter
key.converter.schema.registry.url=http://localhost:8081

value.converter=io.confluent.connect.avro.AvroConverter
value.converter.schema.registry.url=http://localhost:8081

connection.url=jdbc:mysql://localhost:3306/testDB?user=root&password=cloudera

#comment=Which table(s) to include
table.whitelist=ftest

mode=incrementing
incrementing.column.name=id

topic.prefix=ftopic

样本数据

  • MySql

1。)创建数据库:

CREATE DATABASE testDB;

2。)使用数据库:

USE testDB;

3。)创建表:

    CREATE TABLE products (
  id INTEGER NOT NULL PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  description VARCHAR(512),
  weight FLOAT
);

4。)将数据插入表中:

    INSERT INTO products(id,name,description,weight)
  VALUES (103,'car','Small car',20);
  • KSQL

1。)创建流:

CREATE STREAM pro_original (id int, name varchar, description varchar,weight bigint) WITH \
(kafka_topic='proproducts', value_format='DELIMITED');

2。)选择查询:

Select * from pro_original;

预期产量

  1. 消费者

获取插入到MySQL表中的数据。

这里我正在MySQL中获取数据。

  1. Ksql

应该填充插入到Mysql表中并反映在Kafka主题中的流内数据。

我在ksql中没有得到预期的结果

帮我这个数据管道。

1 个答案:

答案 0 :(得分:3)

您的数据采用AVRO格式,但是您定义的VALUE_FORMATAVRO而不是DELIMITED。重要的是要指示KSQL主题中存储的值的格式。以下应该为您解决问题。

CREATE STREAM pro_original_v2 \ 
WITH (KAFKA_TOPIC='products', VALUE_FORMAT='AVRO');

在执行后插入到kafka主题中的数据

SELECT * FROM pro_original_v2;

现在应该在您的ksql控制台窗口中可见。

您可以看一下KSQL here中的一些Avro示例。