Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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 KafkaUtils.createDirectStream未采用正确的参数-Spark Streaming+;卡夫卡_Java_Apache Spark_Apache Kafka_Spark Streaming_Twitter4j - Fatal编程技术网

Java KafkaUtils.createDirectStream未采用正确的参数-Spark Streaming+;卡夫卡

Java KafkaUtils.createDirectStream未采用正确的参数-Spark Streaming+;卡夫卡,java,apache-spark,apache-kafka,spark-streaming,twitter4j,Java,Apache Spark,Apache Kafka,Spark Streaming,Twitter4j,我有一个应用程序,它向卡夫卡主题发送序列化的Twitter数据。到目前为止一切都很好 使用者应用程序应该读取数据并将其反序列化。现在,当我调用KafkaUtils.createDirectStream时,我想我输入了正确的参数(您将在抛出的错误中看到),因此我无法理解它为什么不工作 方法createDirectStream(JavaStreamingContext,类-K-, 类-V-、类-KD-、类-VD-、映射-字符串、字符串-、集合-字符串-)位于 KafkaUtils类型不适用于参数 (

我有一个应用程序,它向卡夫卡主题发送序列化的Twitter数据。到目前为止一切都很好

使用者应用程序应该读取数据并将其反序列化。现在,当我调用
KafkaUtils.createDirectStream
时,我想我输入了正确的参数(您将在抛出的错误中看到),因此我无法理解它为什么不工作

方法createDirectStream(JavaStreamingContext,类-K-, 类-V-、类-KD-、类-VD-、映射-字符串、字符串-、集合-字符串-)位于 KafkaUtils类型不适用于参数 (JavaStreamingContext,类字符串-,类状态-, 类-StringDeserializer-,类-StatusDeserializer-, 映射字符串,字符串-,设置字符串-)

检查火花,我的情妇对我来说仍然是对的

我的代码是:

Set<String> topics = new HashSet<>();
topics.add("twitter-test");
JavaStreamingContext jssc = new JavaStreamingContext(jsc, new Duration(duration));
Map<String, String> props = new HashMap<>();
//some properties...
JavaPairInputDStream messages =  KafkaUtils.createDirectStream(jssc, String.class, Status.class, org.apache.kafka.common.serialization.StringDeserializer.class, stream_data.StatusDeserializer.class, props, topics);
Set topics=newhashset();
添加(“twitter测试”);
JavaStreamingContext jssc=新的JavaStreamingContext(jsc,新的持续时间(持续时间));
Map props=newhashmap();
//一些属性。。。
JavaPairInputStream messages=KafkaUtils.createDirectStream(jssc、String.class、Status.class、org.apache.kafka.common.serialization.StringDeserializer.class、stream_data.StatusDeserializer.class、props、topics);
状态序列化程序代码:

public class StatusSerializer implements Serializer<Status> {

  @Override public byte[] serialize(String s, Status o) {

           try {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                ObjectOutputStream oos = new ObjectOutputStream(baos);
                oos.writeObject(o);
                oos.close();
                byte[] b = baos.toByteArray();
                return b;
            } catch (IOException e) {
                return new byte[0];
            }
        }

      @Override public void close() {

      }

    @Override
    public void configure(Map<String, ?> configs, boolean isKey) {


    }

}
公共类StatusSerializer实现序列化程序{
@重写公共字节[]序列化(字符串s,状态o){
试一试{
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
ObjectOutputStream oos=新的ObjectOutputStream(BAS);
oos.writeObject(o);
oos.close();
字节[]b=baos.toByteArray();
返回b;
}捕获(IOE异常){
返回新字节[0];
}
}
@覆盖公共无效关闭(){
}
@凌驾
公共无效配置(映射配置、布尔isKey){
}
}

问题似乎与“stream\u data.StatusDeserializer.class”有关。您可以输入这个自定义反序列化器类的代码吗。另外,请你调查一下

在KafkaParam参数中包括以下内容

key.deserializer -> classOf[StringDeserializer]
value.deserializer -> classOf[StatusDeserializer]