在开始之前,我想首先说我对Kafka来说是全新的并且对Linux很新,所以如果这最终成为一个荒谬简单的答案,请善待! :)
我尝试做的高级想法是使用Confluent的Kafka Connect从MySQL数据库中读取数据,该数据库在一分钟或分钟的基础上传输传感器数据,然后使用Kafka作为" ETL管道"立即将数据发送到数据仓库和/或MongoDB进行报告,甚至从我们的网络应用程序直接绑定到Kafka。
我正在使用Robin Moffatt的series以及Confluent的JDBC Source Connector Quickstart作为我的初步指南。至于这些托管的位置,我使用Amazon RDS MySQL数据库和一个单独的AWS EC2 t2.large实例与Ubuntu 16.04.2来运行Kafka Connect。
使用Robin的工作流程,我已经创建了配置文件,但我没有使用他使用的json格式。我正在使用快速入门文章中的格式。
name=jdbc_source_mysql_4427_Data
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://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=*****
table.whitelist=4427_Data
mode=timestamp
timestamp.column.name=TmStamp
validate.non.null=false
topic.prefix=mysql-
这保存在:
/etc/kafka-connect-jdbc/kafka-connect-jdbc-source.properties
然后我跑了:
/usr/bin/confluent load jdbc_source_mysql_4427_Data -d /etc/kafka-connect-jdbc/kafka-connect-jdbc-source.properties
并收到此错误:
{
"error_code": 400,
"message": "Connector configuration is invalid and contains the following 2 error(s):\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=*** for configuration Couldn't open connection to jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=***\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=*** for configuration Couldn't open connection to jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=***\nYou can also find the above list of errors at the endpoint `/{connectorType}/config/validate`"
}
这似乎是一个驱动问题。我现在的问题是,"我是否需要将MySQL JDBC驱动程序下载到我的EC2实例,或者是否应该包含在Confluent Platform包中?"
另外,我的整体想法听起来非常适合Kafka Connect吗?
正如我之前提到的,我是这些技术的新手,但已经发现学习某些东西的最佳方法是直接进入并尝试解决问题。任何想法和建议都会受到欢迎。谢谢!
答案 0 :(得分:2)
整体概念对我有意义。您需要下载驱动程序并将其添加到worker类路径中。由于我认为的许可原因,它没有打包。
答案 1 :(得分:1)
这是因为在汇合的分发中没有mysql驱动程序。我想你可以通过下载一个mysql驱动程序jar文件,然后将它放在confluent / share / java / kafka-connect-jdbc文件夹中并重新运行该程序来解决问题。
答案 2 :(得分:0)
正如@dawsaw所说,你需要让连接器可以使用MySQL JDBC驱动程序。
我在这里的观察将是你所描述的所有应用程序和架构的自由 - 最好从传感器流入Kafka,然后从Kafka流入MySQL,Mongo,webapp等。
如果你有选择的话,流入数据库然后流出数据库并不是一个完美的选择。