简体   繁体   中英

Error while creating topic in kafka

I am using kafka on window by Cygwin and trying to create a topic and getting the below error

log4j:ERROR Could not read configuration file from URL [file:/cygdrive/d/kafka/bin/../config/tools-log4j.properties].
java.io.FileNotFoundException: \cygdrive\d\kafka\bin\..\config\tools-log4j.properties (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:524)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:483)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
    at org.apache.log4j.Logger.getLogger(Logger.java:117)
    at org.I0Itec.zkclient.ZkClient.<clinit>(ZkClient.java:57)
    at kafka.admin.TopicCommand$.main(TopicCommand.scala:51)
    at kafka.admin.TopicCommand.main(TopicCommand.scala)
log4j:ERROR Ignoring configuration file [file:/cygdrive/d/kafka/bin/../config/tools-log4j.properties].
log4j:WARN No appenders could be found for logger (org.I0Itec.zkclient.ZkEventThread).
log4j:WARN No appenders could be found for logger (org.I0Itec.zkclient.ZkConnection).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

But the topic is getting created. Can you help me on this

Are you creating the topic using this command line from the Kafka documentation ?

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

I encountered the same error when running that script in Cygwin, and I made this change in bin/kafka-run-class.sh to resolve the problem (similar to the Cygwin classpath solution referenced in step 3 of the first answer here ):

Original:

# Log4j settings if [ -z "$KAFKA_LOG4J_OPTS" ]; then KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/config/tools-log4j.properties" fi

To:

# Log4j settings if [ -z "$KAFKA_LOG4J_OPTS" ]; then KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$(cygpath -wp $base_dir/config/tools-log4j.properties)" fi

I think the path you have mentioned is incorrect. As the message says File Not Found Exception. Below is a sample code to send messages to kafka in Java. Assuming Kafka server is running locally.

`public static void main(String[] args){
    long events = 100000;
    Random rnd  = new Random();

    Properties props = new Properties();
    props.put("metadata.broker.list", "localhost:9092");
    props.put("serializer.class", "kafka.serializer.StringEncoder");
    props.put("partitioner.class", "com.pranjal.kafkatest.SimplePartitioner");
    props.put("request.required.acks", "1");

    ProducerConfig config = new ProducerConfig(props);

    Producer<String, String> producer = new Producer<String, String>(config);

    for(int i=0;i<events;++i){

        long runtime = new Date().getTime();
        String ip    = "192.168.2." + rnd.nextInt(255);

        String msg= "Hello";

        KeyedMessage<String, String> data = new KeyedMessage<String, String>("sentences", ip, msg);
        producer.send(data);
    }
    producer.close();
}`

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM