我们需要从Kafka Stream获取数据流,我们的目标是将此数据推送到SOLR。
我们做了一些阅读,但我们发现市场上有很多Kafka Connect解决方案,但问题是我们不知道哪个是最佳解决方案以及如何实现。
选项包括:
没有为上述选项提供太多文档或深度信息。
是否有人能够让我知道
我们如何使用Solr连接器并在不使用Confluent的情况下与Kafka流集成? Solr-Kafka Connector :https://github.com/MSurendra/kafka-connect-solr
另外,关于Apache Storm, Apache Storm是否可以接受Kafka Stream并将其推送到Solr,尽管在将数据推送到Solr之前我们需要对数据进行一些清理?
答案 0 :(得分:2)
我在这里避开Storm,因为问题主要是关于Kafka Connect
CAVEAT - 该问题中的Solr Connector使用的是Kakfa 0.9.0.1依赖项,因此,它不太可能与最新的Kafka API一起使用。
此连接器未经我测试。请自担风险
以下是Confluent's documentation on using community connectors的摘录,并有一些重点和改编。换句话说,为Kafka Connects编写,不包括在Confluent Platform中。
$ git clone https://github.com/MSurendra/kafka-connect-solr
更改为新克隆的仓库,并签出您想要的版本。 (This Solr connector has no releases like the Confluent ones)。 您通常希望签出已发布的版本。
$ cd kafka-connect-solr; mvn package
点击此处,查看Installing Plugins
我们将target
目录中生成的Maven输出复制到Kafka Connect工作者插件路径(plugin.path
属性)上的一个目录中。
例如,如果插件路径包含/usr/local/share/kafka/plugins
目录,我们可以使用以下技术之一将连接器作为插件使用。
As mentioned in the Confluent docs,export CLASSPATH=<some path>/kafka-connect-solr-1.0.jar
选项可行,但plugin.path
将是前进的方式(Kafka 1.0 +)
您应该根据mvn package
使用此Solr Connector,我们得到一个名为kafka-connect-solr-1.0.jar
的文件。
我们将该文件复制到/usr/local/share/kafka/plugins
目录:
$ cp target/kafka-connect-solr-1.0.jar /usr/local/share/kafka/plugins/
(这不适用于Solr连接器)
如果连接器的JAR被收集到构建目标目录的子目录中,我们可以将所有这些JAR复制到/usr/local/share/kafka/plugins
中的插件目录中,例如
$ mkdir -p /usr/local/share/kafka/plugins/kafka-connect-solr
$ cp target/kafka-connect-solr-1.0.0/share/java/kafka-connect-solr/* /usr/local/share/kafka/plugins/kafka-connect-solr/
注意
请务必在运行Kafka Connect分布式工作进程的计算机的所有上安装插件。重要的是,您使用的每个连接器都适用于所有工作人员,因为Kafka Connect会将连接器任务分发给任何工作人员
如果您已正确设置plugin.path
或export CLASSPATH
,那么您可以将connect-standalone
或connect-distributed
与该Connect项目的相应配置文件一起使用。
关于,
在将数据推送到Solr
之前,我们需要对数据进行一些清理
您需要使用单独的流程(如Kafka Streams,Storm或Kafka Connect之前的其他流程)来执行此操作。将转换后的输出写入辅助主题。或者编写自己的Kafka Connect转换过程。开箱即用Kafka Connect has very limited transformations。
另外值得一提 - JSON seems to be the only supported Kafka message format for this Solr connector