Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka flume:为分区kafka接收器分配密钥_Apache Kafka_Key_Flume Ng - Fatal编程技术网

Apache kafka flume:为分区kafka接收器分配密钥

Apache kafka flume:为分区kafka接收器分配密钥,apache-kafka,key,flume-ng,Apache Kafka,Key,Flume Ng,我正在处理一个问题,但在flume文档中也找不到任何解决问题的答案。 我想获取拖尾文件的绝对路径并保存它。 之后,我希望将它作为密钥传递给kafka接收器,以便在同一分区中具有相同路径的所有事件。 我读过很多文章,说这是可能的,但我找不到配置分配,以使其工作。有人能给我介绍一下如何配置代理吗? 我有以下代理配置: source agent3a.sources.source3a.type = TAILDIR agent3a.sources.source3a.filegroups= f1 agent

我正在处理一个问题,但在flume文档中也找不到任何解决问题的答案。 我想获取拖尾文件的绝对路径并保存它。 之后,我希望将它作为密钥传递给kafka接收器,以便在同一分区中具有相同路径的所有事件。 我读过很多文章,说这是可能的,但我找不到配置分配,以使其工作。有人能给我介绍一下如何配置代理吗?
我有以下代理配置:

source
agent3a.sources.source3a.type = TAILDIR
agent3a.sources.source3a.filegroups= f1
agent3a.sources.source3a.filegroups.f1 = /path/local/data/source/
agent3a.sources.source3a.channels= channel3a
agent3a.sources.source3a.batchSize=1
agent3a.sources.source3a.fileHeader= True

Memory Channel
agent3a.channels.channel3a.type = memory
agent3a.channels.channel3a.transactionCapacity = 100
agent3a.channels.channel3a.capacity = 100

Sink
agent3a.sinks.sink3a.type= org.apache.flume.sink.kafka.KafkaSink 
agent3a.sinks.sink3a.kafka.bootstrap.servers =########hostname1#####:port, ########hostname2#####:port
agent3a.sinks.sink3a.kafka.topic= topic_test
agent3a.sinks.sink3a.kafka.producer.acks=1
agent3a.sinks.sink3a.channel= channel3a
agent3a.sinks.sink3a.FlumeBatchSize=1
agent3a.sinks.sink3a.useFlumeEventFormat = true
agent3a.sinks.sink3a.kafka.producer.batch.size=10

tnk at all:)

最后,我找到了如何配置代理,以便使用数据源中文件的绝对路径为kafka主题中的分区分配密钥。 更详细地说,有必要设置属性'fileHeaderKey=key'。这样,当事件传递到kafka接收器时,头包含对key=absolute/path/of/the/file,kafka可以将其用作其消息中的密钥

agent3a.sources= source3a 
agent3a.channels= channel3a
agent3a.sinkss= sink3a

source
agent3a.sources.source3a.type = TAILDIR
agent3a.sources.source3a.filegroups= f1
agent3a.sources.source3a.filegroups.f1 = /path/local/data/source/
agent3a.sources.source3a.channels= channel3a
agent3a.sources.source3a.batchSize=1
agent3a.sources.source3a.fileHeader= True
agent3a.sources.source3a.fileHeaderKey= key #####property to set the fileHeader the 
                                                  key for partitioning###

Memory Channel
agent3a.channels.channel3a.type = memory
agent3a.channels.channel3a.transactionCapacity = 100
agent3a.channels.channel3a.capacity = 100

Sink
agent3a.sinks.sink3a.type= org.apache.flume.sink.kafka.KafkaSink 
agent3a.sinks.sink3a.kafka.bootstrap.servers =########hostname1#####:port, ########hostname2#####:port
agent3a.sinks.sink3a.kafka.topic= topic_test
agent3a.sinks.sink3a.kafka.producer.acks=1
agent3a.sinks.sink3a.channel= channel3a
agent3a.sinks.sink3a.FlumeBatchSize=1
agent3a.sinks.sink3a.useFlumeEventFormat = true
agent3a.sinks.sink3a.kafka.producer.batch.size=10