簡體   English   中英

Flink序列化錯誤

[英]Flink Serialization Error

我正在嘗試在Apache Flink Gelly Graph上運行Label傳播協議。
這是我的代碼:

        Graph<String, Long, String> ugraph = Graph.fromDataSet(vertex, edgeSet, env).getUndirected();
        DataSet<Tuple2<String, Long>> idsWithInitialLabels = DataSetUtils
            .zipWithUniqueId(graph.getVertexIds())
            .map(new MapFunction<Tuple2<Long, String>, Tuple2<String, Long>>() {
                public Tuple2<String, Long> map(Tuple2<Long, String> tuple2) throws Exception {
                    return new Tuple2<String, Long>(tuple2.f1, tuple2.f0);
                }
            }); 
        DataSet<Vertex<String, Long>> verticesWithCommunity = graph.joinWithVertices(idsWithInitialLabels,
            new VertexJoinFunction<Long, Long>() {
            public Long vertexJoin(Long vertexValue, Long inputValue) {
            return inputValue;
        }})
    .run(new LabelPropagation<String, Long, String>(10)); 

我收到以下錯誤消息:

org.apache.flink.api.common.InvalidProgramException:Object org.apache.flink.graph.Graph$ApplyCoGroupToVertexValues@4dde0543 notgable at org.apache.flink.api.java.ClosureCleaner.ensureSerializable(ClosureCleaner.java:99)at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:61)位於org.apache.flink.api上的org.apache.flink.api.java.DataSet.clean(DataSet.java:186)。 java.operators.CoGroupOperator $ CoGroupOperatorSets $ CoGroupOperatorSetsPredicate $ CoGroupOperatorWithoutFunction.with(CoGroupOperator.java:619)org.apache.flink.graph.Graph.joinWithVertices(Graph.java:587)at tu.master.ConceptDetection.TextProcessor.clustering( TextProcessor.java:405)在tu.master.ConceptDetection.TextProcessor $ 4.actionPerformed(TextProcessor.java:210)

謝謝您的幫助 :)

我猜測包含圖形代碼的類不是Serializable 匿名類在Java中是真正的非靜態內部類,這意味着它們必須包含類的引用this (見這個答案 )。 如果包含的類不是Serializable ,則this引用將不會序列化,匿名類也不會。

這可以解釋為什么切換到lambda表達式會使其序列化。 Lambda表達式不是匿名類,因此它們不會自動捕獲隱式this引用。

它沒有解釋的是為什么將MapFunction聲明為匿名類仍然有效。 如果你仍然有這個代碼,@ Nesrine,我會好奇整個班級的樣子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM