我想使用 Kafka Connector 将数据从 Kafka 流式传输到 MongoDB。我找到了这个https://github.com/hpgrahsl/kafka-connect-mongodb。但是没有步骤可做。
谷歌搜索后,它似乎导致了我不想使用的Confluent Platform。
任何人都可以分享我的文档/指南,如何在不使用 Confluent 平台或其他 Kafka 连接器的情况下使用kafka-connect-mongodb将数据从 Kafka 流式传输到 MongoDB?
先感谢您。
我试过的
Step1:我mongo-kafka-connect-0.1-all.jar从maven central下载
Step2:将jar文件复制到一个新文件夹plugins里面kafka(我在windows上用的是Kafka,所以目录是D:\git\1.libraries\kafka_2.12-2.2.0\plugins)
步骤 3:connect-standalone.properties通过添加新行来
编辑文件plugin.path=/git/1.libraries/kafka_2.12-2.2.0/plugins
步骤 4:我为 mongoDB 接收器添加新的配置文件 MongoSinkConnector.properties
name=mongo-sink
topics=test
connector.class=com.mongodb.kafka.connect.MongoSinkConnector
tasks.max=1
key.ignore=true
# Specific global MongoDB Sink Connector configuration
connection.uri=mongodb://localhost:27017,mongo1:27017,mongo2:27017,mongo3:27017
database=test_kafka
collection=transaction
max.num.retries=3
retries.defer.timeout=5000
type.name=kafka-connect
Run Code Online (Sandbox Code Playgroud)
第五步:运行命令 bin\windows\connect-standalone.bat config\connect-standalone.properties config\MongoSinkConnector.properties
但是,我得到了错误
[2019-07-09 10:19:09,466] WARN The configuration 'offset.flush.interval.ms' was supplied but isn't …Run Code Online (Sandbox Code Playgroud) 我有一个这样的对象:
{
"a" : 1,
"b" : {
"c" : {
"c1" : "abc",
"source" : "abcxyz"
},
"d" : {
"d1" : "abcd",
"source" : "abcxyz"
},
"e" : {
"e1" : "abcde",
"source" : "abcxyz"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的期望是
{
"a" : 1,
"b" : {
"c" : {
"c1" : "abc"
},
"d" : {
"d1" : "abcd"
},
"e" : {
"e1" : "abcde"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想删除“源”属性。在没有指定键“ c”,“ d”或“ e”的情况下该怎么做,因为它们是动态的。
我尝试使用this.refs.myField.getValue()或this.refs.myTextField.input.value。但是,它们已经贬值了。
我不想使用onChangeinside TextField,我只是在单击按钮 Convert 时转换文本
import React from 'react';
import TextField from '@material-ui/core/TextField';
import Button from '@material-ui/core/Button';
class Test extends React.Component {
constructor(props) {
super(props);
this.state = {
text: '',
};
};
handleConvertString = (event) => {
let str = this.refs.myField.getValue();
this.setState({
text: str.replace(/[dog]/gi, ''),
})
};
render() {
return (
<div>
<TextField
ref="myField"
fullWidth
/>
<Button variant="outlined" href="#outlined-buttons" onClick={this.handleConvertString}>
Convert
</Button>
<h1>{this.state.text}</h1>
</div>
)
}
}
export default Test;
Run Code Online (Sandbox Code Playgroud) 我对以下代码感到困惑:
代码#1
$("#btn1").click(alert("hello"));
Run Code Online (Sandbox Code Playgroud)
代码#2
$("#btn1").click(function() {
alert("Btn 1 Clicked");
});
Run Code Online (Sandbox Code Playgroud)
使用代码#1,alert无需单击按钮即可运行功能.为什么在alert没有click触发事件的情况下调用该函数?我认为click只有当用户点击按钮时才会运行一个函数,然后该alert函数将被运行.请指正.
有人可以向我解释为什么这些代码示例表现不同?