Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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

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
Java 卡夫卡到hdfs的融合源代码_Java_Apache Kafka_Apache Kafka Connect - Fatal编程技术网

Java 卡夫卡到hdfs的融合源代码

Java 卡夫卡到hdfs的融合源代码,java,apache-kafka,apache-kafka-connect,Java,Apache Kafka,Apache Kafka Connect,为了满足项目的需求,我需要从汇合的java代码中构建一个类,将kafka主题中的数据写入hdfs文件系统 它实际上在CLI中使用connect standalone工作,但我需要对成功构建的源代码执行相同的操作 我对SinkTask和hdfsConnector类有问题。 put方法中出现异常 下面是我的班级代码: package io.confluent.connect.hdfs; import static org.junit.Assert.assertEquals; import stat

为了满足项目的需求,我需要从汇合的java代码中构建一个类,将kafka主题中的数据写入hdfs文件系统

它实际上在CLI中使用connect standalone工作,但我需要对成功构建的源代码执行相同的操作

我对SinkTask和hdfsConnector类有问题。 put方法中出现异常

下面是我的班级代码:

package io.confluent.connect.hdfs;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.apache.kafka.connect.errors.ConnectException;
import org.apache.kafka.connect.sink.SinkConnector;
import org.apache.kafka.connect.sink.SinkRecord;
import org.apache.kafka.connect.sink.SinkTaskContext;

import io.confluent.connect.avro.AvroData;
import io.confluent.connect.hdfs.avro.AvroFormat;
import io.confluent.connect.hdfs.partitioner.DefaultPartitioner;
import io.confluent.connect.storage.common.StorageCommonConfig;
import io.confluent.connect.storage.partitioner.PartitionerConfig;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.kafka.common.TopicPartition;
import org.apache.kafka.common.config.ConfigDef;

public class main{
    private static Map<String, String> props = new HashMap<>(); 
    protected static final TopicPartition TOPIC_PARTITION = new TopicPartition(TOPIC, PARTITION);
      protected static String url = "hdfs://localhost:9000";
    protected static SinkTaskContext context;

    public static void main(String[] args) {
        HdfsSinkConnector hk = new HdfsSinkConnector();
        HdfsSinkTask h = new HdfsSinkTask();
        props.put(StorageCommonConfig.STORE_URL_CONFIG, url);
        props.put(HdfsSinkConnectorConfig.HDFS_URL_CONFIG, url);
        props.put(HdfsSinkConnectorConfig.FLUSH_SIZE_CONFIG, "3");
        props.put(HdfsSinkConnectorConfig.FORMAT_CLASS_CONFIG, AvroFormat.class.getName());    
        try {
            hk.start(props);
            Collection<SinkRecord> sinkRecords = new ArrayList<>();
            SinkRecord record = new SinkRecord("test", 0, null, null, null, null, 0);
            sinkRecords.add(record);
            h.initialize(context);
            h.put(sinkRecords);
            hk.stop();
        } catch (Exception e) {
            throw new ConnectException("Couldn't start HdfsSinkConnector due to configuration error", e);
        }
    }
}
package io.confluent.connect.hdfs;
导入静态org.junit.Assert.assertEquals;
导入静态org.junit.Assert.assertTrue;
导入java.util.ArrayList;
导入java.util.Collection;
导入java.util.HashMap;
导入java.util.HashSet;
导入java.util.List;
导入java.util.Map;
导入java.util.Set;
导入java.util.concurrent.TimeUnit;
导入org.apache.kafka.connect.errors.ConnectException;
导入org.apache.kafka.connect.sink.SinkConnector;
导入org.apache.kafka.connect.sink.SinkRecord;
导入org.apache.kafka.connect.sink.SinkTaskContext;
导入io.confluent.connect.avro.AvroData;
导入io.confluent.connect.hdfs.avro.AvroFormat;
导入io.confluent.connect.hdfs.partitioner.DefaultPartitioner;
导入io.confluent.connect.storage.common.StorageCommonConfig;
导入io.confluent.connect.storage.partitioner.PartitionerConfig;
导入org.apache.hadoop.conf.Configuration;
导入org.apache.hadoop.fs.Path;
导入org.apache.kafka.common.TopicPartition;
导入org.apache.kafka.common.config.ConfigDef;
公共班机{
私有静态映射props=newhashmap();
受保护的静态最终TopicPartition TOPIC_PARTITION=新TopicPartition(主题,分区);
受保护的静态字符串url=”hdfs://localhost:9000";
受保护的静态上下文;
公共静态void main(字符串[]args){
HdfsSinkConnector hk=新的HdfsSinkConnector();
HdfsSinkTask h=新的HdfsSinkTask();
put(StorageCommonConfig.STORE\u URL\u CONFIG,URL);
put(HdfsSinkConnectorConfig.HDFS\u URL\u CONFIG,URL);
props.put(HdfsSinkConnectorConfig.FLUSH\u SIZE\u CONFIG,“3”);
put(HdfsSinkConnectorConfig.FORMAT\u CLASS\u CONFIG,AvroFormat.CLASS.getName());
试一试{
香港(道具),;
集合记录=新的ArrayList();
SinkRecord记录=新的SinkRecord(“测试”,0,null,null,null,null,0);
添加(记录);
h、 初始化(上下文);
h、 放置(记录);
hk.stop();
}捕获(例外e){
抛出新的ConnectException(“由于配置错误,无法启动HdfsSinkConnector”,e);
}
}
}

“put方法中出现异常”-->异常是什么?你需要提供更多的信息。另外,您在代码中编写的自定义是什么,而香草实例无法做到?是处理更适合Kafka Streams还是KSQL?线程“main”org.apache.Kafka.connect.errors.ConnectException中的异常:由于io.confluent.connect.hdfs.main(main.java:63)处的配置错误,无法启动HdfsSinkConnector原因:io.confluent.connect.hdfs.HdfsSinkTask.put(HdfsSinkTask.java:109)在io.confluent.connect.hdfs.main.main(main.java:57)处出现java.lang.NullPointerException异常。我没有得到第二部分,请你给我澄清一下好吗?connect不是这样运行的,那么,我如何在我的应用程序中实现它,我在这里试图避免通过命令行来完成这个过程,这就是为什么我有开发这个类的想法?