简体   繁体   English

在kafka中创建主题时出错

[英]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 我在Cygwin的窗口上使用kafka并试图创建一个主题并得到以下错误

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 ? 您是否使用Kafka文档中的此命令行创建主题?

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 ): 在Cygwin中运行脚本时,我遇到了同样的错误,我作出斌/ kafka-run-class.sh这种变化来解决问题(类似于第一个答案的第3步中引用的类路径Cygwin的解决方案在这里 ):

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. 下面是一个用Java发送消息到kafka的示例代码。 Assuming Kafka server is running locally. 假设Kafka服务器在本地运行。

`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();
}`

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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