2015-10-22 22 views
16

Sto provando a caricare un semplice file di testo anziché uno standard in Kafka. Dopo aver scaricato Kafka, ho eseguito le seguenti operazioni:Come scrivere un file su Kafka Producer

Zookeeper Iniziata

bin/zookeeper-server-start.sh config/zookeeper.properties

introduttiva Server

bin/kafka-server-start.sh config/server.properties

Creato un argomento denominato "test":

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

Ran Produttore:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
Test1 
Test2 

Ascoltato dal Consumatore:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning 
Test1 
Test2 

Invece di input standard , Voglio passare un file di dati o anche come inserire il file di testo nel Producer che può essere visto direttamente dal Consumatore. Qualsiasi aiuto sarebbe molto apprezzato. Grazie!

risposta

43

È possibile reindirizzare in:

kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic 
--new-producer < my_file.txt 

Trovato here.

Da 0.9.0:

kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic < my_file.txt 
+1

Grazie mille. Ha funzionato!!! – Katie

+5

Sto usando Kafka-0.9. --new-producer non è supportato in kafka-console-producer.sh, invece, $ kafka-console-producer.sh --broker-list localhost: 9092 --topic my_topic prabhugs

+0

Penso che --new-producer sia il vero produttore da 0.9 :) –

5
$ kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic < my_file.txt 

lavorato per me in Kafka-0.9.0

1
echo "Hello" | kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic 
+1

Sebbene questo snippet di codice possa risolvere la domanda, inclusa una spiegazione [aiuta veramente] (// meta.stackexchange.com/q/114762) per migliorare la qualità del tuo post.Ricorda che stai rispondendo alla domanda per i lettori in futuro, non solo la persona che chiede ora! Si prega di [modificare] la risposta per aggiungere una spiegazione e fornire un'indicazione di quali limitazioni e ipotesi si applicano. –

3

Qui ci sono alcuni modi che sono poco più generalizzato ma può essere eccessivo per il semplice file

coda

tail -n0 -F my_file.txt | kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic

Spiegazione

  1. tail legge dalla fine del file come cresce o registri vengono aggiunti continuamente
  2. -n0 indica outputlast 0 linee così unica linea nuova è scelto
  3. -F segue il file per nome invece descrittore, quindi funziona anche se è ruotato

syslog-ng

options {                                
    flush_lines (0);                             
    time_reopen (10);                            
    log_fifo_size (1000);                           
    long_hostnames (off);                           
    use_dns (no);                             
    use_fqdn (no);                             
    create_dirs (no);                            
    keep_hostname (no);                            
}; 

source s_file { 
    file("path to my-file.txt" flags(no-parse)); 
} 


destination loghost { 
    tcp("*.*.*.*" port(5140)); 
} 

consumando

nc -k -l 5140 | kafka-console-producer.sh --broker-list localhost:9092 --topic my_topic

Spiegazione (da man nc)

-k' Forces nc to stay listening for another connection after its current connection is completed. It is an error to use this option without the -l option. 

-l' Used to specify that nc should listen for an incoming connection rather than initiate a connection to a remote host. It is an error to use this option in conjunction with the -p, -s, or -z options. Additionally, any timeouts specified with the -w option are ignored. 

Rif

Syslog-ng