2016-05-07 3 views
0

Ich versuche, flink-Streaming-Zustand Backend zu verwenden, nach dieser Anleitung lösen.nicht Symbol ValueState

Nach einem Blick, merke ich, dass ValueState ist nicht in meinen Abhängigkeiten. Stattdessen befindet sich nur OperatorState in org.apache.flink.api.common.state (flink-core).

Wenn ich jedoch auf Github sehen, ich sehe ValueState in diesem Paket: https://github.com/apache/flink/tree/master/flink-core/src/main/java/org/apache/flink/api/common/state

Ich vermute, ich entweder nicht über die richtige Version von flink die StateBackend die Art und Weise zu verwenden, die Führungs es zeigt, oder vielleicht habe ich die richtige Version, aber der ValueState wurde in eine andere maven-Abhängigkeit verschoben.

Unten ist mein pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>test</groupId> 
<artifactId>flink-streaming</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>flink-streaming</name> 
<url>http://maven.apache.org</url> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <!--<flink.version>0.10.2</flink.version>--> 
    <flink.version>0.10.2</flink.version> 
    <scala.version>2.11.8</scala.version> 
    <scala.dependency.version>2.11</scala.dependency.version> 
</properties> 


<dependencies> 
    <dependency> 
     <groupId>org.scala-lang</groupId> 
     <artifactId>scala-library</artifactId> 
     <version>${scala.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.flink</groupId> 
     <artifactId>flink-scala_${scala.dependency.version}</artifactId> 
     <version>${flink.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.flink</groupId> 
     <artifactId>flink-clients_${scala.dependency.version}</artifactId> 
     <version>${flink.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.flink</groupId> 
     <artifactId>flink-streaming-scala_${scala.dependency.version}</artifactId> 
     <version>${flink.version}</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.scala-tools</groupId> 
      <artifactId>maven-scala-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>compile</goal> 
         <goal>testCompile</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <jvmArgs> 
        <jvmArg>-Xms64m</jvmArg> 
        <jvmArg>-Xmx1024m</jvmArg> 
       </jvmArgs> 
      </configuration> 
     </plugin> 

    </plugins> 
</build> 

Und hier ist mein Code:

import org.apache.flink.api.common.functions.RichFlatMapFunction; 
import org.apache.flink.api.java.tuple.Tuple2; 
import org.apache.flink.util.Collector; 


public class CountWindowAverage extends RichFlatMapFunction<Tuple2<Long,Long>, Tuple2<Long,Long>> { 
    private transient ValueState<Tuple2<Long,Long>> sum; 

    @Override 
    public void flatMap(Tuple2<Long,Long> input, Collector<Tuple2<Long,Long>> out) throws Exception { 

    } 
} 

Vielen Dank im Voraus für Ihre Hilfe!

Laurent.

Antwort

0

Sie haben Recht Flink Version 0.10.x hatte noch nicht ValueState. Wenn Sie zu mindestens Version 1.0.0 wechseln, sollten Sie in Ordnung sein.

+0

Vielen Dank! :) –

+0

Ich finde es wissend, welche Version in Flink ziemlich schwierig zu verwenden ist. Die offizielle Dokumentation und die meisten Tutorials sagen nie etwas über die erforderlichen Abhängigkeiten, also musst du ein Beispiel online finden, das oft veraltet ist ... –

+0

Es gibt diesen Abschnitt im Dokument: https://ci.apache.org/projects /flink/flink-docs-release-1.0/apis/common/index.html#linking-with-flink Für die Verwendung anderer Bibliotheken, wie die CEP-Bibliothek oder Flink ML, liefern sie auch die Maven-Koordinaten am Anfang ihres Unterabschnitts in der Arzt. Beachten Sie, dass Sie zum Tab "Scala" wechseln können, um Informationen über Scala und nicht über Java zu erhalten. – aljoscha