我正在尝试编写一个简单的流处理Spark作业,它将获取每个属于用户的消息列表(JSON格式),计算每个用户的消息并打印前十个用户.
但是,当我定义Comparator>对减少的计数进行排序时,整个过程会因抛出java.io.NotSerializableException而失败.
我对Spark的maven依赖:
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.9.3</artifactId>
<version>0.8.0-incubating</version>
Run Code Online (Sandbox Code Playgroud)
我正在使用的Java代码:
public static void main(String[] args) {
JavaSparkContext sc = new JavaSparkContext("local", "spark");
JavaRDD<String> lines = sc.textFile("stream.sample.txt").cache();
JavaPairRDD<String, Long> words = lines
.map(new Function<String, JsonElement>() {
// parse line into JSON
@Override
public JsonElement call(String t) throws Exception {
return (new JsonParser()).parse(t);
}
}).map(new Function<JsonElement, String>() {
// read User ID from JSON
@Override
public String call(JsonElement json) throws Exception {
return json.getAsJsonObject().get("userId").toString();
}
}).map(new PairFunction<String, String, Long>() {
// count each …Run Code Online (Sandbox Code Playgroud)