gpt4 book ai didi

java - 在 Spark Streaming 中将 StreamingContext 与 Receiver 分开

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:48 24 4
gpt4 key购买 nike

我想概括一下我的 Main 中的接待情况。设置 SparkConf 和 JavaContextStreaming 后,我想接收任意对象,然后将其传递给分析器。

在下面的情况下,我遇到异常:任务不可序列化

Main.java
/**
*
**/
SparkConf conf = new SparkConf().setMaster("local[*]").setAppName("MyApp");
JavaStreamingContext jsc = new JavaStreamingContext(conf, BATCH_DURATION);
JavaReceiverInputDStream<String> input = jsc.socketTextStream(HOST, PORT);
OtherClass.analyze(input);
/*
*/
jsc.start();
jsc.awaitTermination();
jsc.close();

OtherClass.java
/**
*
**/
public void analyze(JavaReceiverInputDStream<String> input){
JavaPairDStream<String, String> events = input.mapToPair( ...);
// other code
//
// Task not serializable (at the line where I call lines.mapToPair(...))
//
}

我还尝试将接收器放入该方法中,并且在同一行得到相同的结果。

Main.java
/**
*
**/
SparkConf conf = new SparkConf().setMaster("local[*]").setAppName("MyApp");
JavaStreamingContext jsc = new JavaStreamingContext(conf, BATCH_DURATION);
OtherClass.analyze(jsc);
/*
*/

OtherClass.java
/**
*
**/
public void analyze(JavaStreamingContext jsc){

JavaReceiverInputDStream<String> input = jsc.socketTextStream(HOST, PORT);
JavaPairDStream<String, String> events = input.mapToPair( ...);
// other code
//
// Task not serializable (at the line where I call lines.mapToPair(...))
//
jsc.start();
jsc.awaitTermination();
jsc.close();
}

有一种方法可以将接收器(在本例中为 JavaReceiverInputDStream,但也可以很容易地为 JavaDStream)与分析数据的逻辑部分分开?或者,有一种方法可以将 JavaStreamingContext 与接收器和分析数据的部分分开?

最佳答案

OP 的解决方案。

我只需要在 OtherClass.java 中实现 Serialized (java.io)。显然,每个环境都需要它,包括本地环境。

关于java - 在 Spark Streaming 中将 StreamingContext 与 Receiver 分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48889451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com