You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Mateusz Jarzyna (JIRA)" <ji...@apache.org> on 2019/07/29 12:47:00 UTC

[jira] [Created] (FLINK-13474) NoSuchMethodError when registering DataStream

Mateusz Jarzyna created FLINK-13474:
---------------------------------------

             Summary: NoSuchMethodError when registering DataStream
                 Key: FLINK-13474
                 URL: https://issues.apache.org/jira/browse/FLINK-13474
             Project: Flink
          Issue Type: Bug
          Components: Table SQL / Ecosystem
    Affects Versions: 1.8.1
         Environment: runtime: Docker flink:latest. Compiler: javac 1.8.0_172

 
            Reporter: Mateusz Jarzyna


I'm trying to add some data to table.

Dependencies:
{code:java}
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <flink.version>1.8.1</flink.version>
    <java.version>1.8</java.version>
    <scala.binary.version>2.11</scala.binary.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

<dependencies>
    <!-- Apache Flink dependencies -->
    <!-- These dependencies are provided, because they should not be packaged into the JAR file. -->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-java</artifactId>
        <version>${flink.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-connector-kafka_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-table-planner_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-table-api-java-bridge_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-scala_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
    </dependency>
</dependencies>
{code}
Code:
{code:java}
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.java.StreamTableEnvironment;

import java.util.Properties;

public class Test {

   public static void main(String[] args) throws Exception {
      StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
      StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);

      Properties properties = new Properties();
      properties.setProperty("bootstrap.servers", "ran-kafka:9092");
      properties.setProperty("group.id", "test");
      DataStream<String> stream = env
            .addSource(new FlinkKafkaConsumer<>("testtopic", new SimpleStringSchema(), properties));

      SingleOutputStreamOperator<LD> lds = stream
            .map(x -> {
               LD ld = new LD();
               ld.setName(x);
               ld.setCount(0);
               return ld;
            });

      tEnv.registerDataStream("LeDa", lds, "name, count");

      Table table = tEnv.sqlQuery("select * from LeDa");
      System.out.println(table);

      env.execute("");
   }
{code}
 

But when I'm submitting the jar (using Flink Dashboard) I'm getting the error
{code:java}
org.apache.flink.client.program.ProgramInvocationException: The program caused an error:
    at org.apache.flink.client.program.OptimizerPlanEnvironment.getOptimizedPlan(OptimizerPlanEnvironment.java:93)
    at org.apache.flink.client.program.PackagedProgramUtils.createJobGraph(PackagedProgramUtils.java:80)
    at org.apache.flink.runtime.webmonitor.handlers.utils.JarHandlerUtils$JarHandlerContext.toJobGraph(JarHandlerUtils.java:126)
    at org.apache.flink.runtime.webmonitor.handlers.JarRunHandler.lambda$getJobGraphAsync$6(JarRunHandler.java:142)
    at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps;
    at org.apache.flink.table.api.TableEnvironment.getFieldInfo(TableEnvironment.scala:1099)
    at org.apache.flink.table.api.StreamTableEnvironment.registerDataStreamInternal(StreamTableEnvironment.scala:546)
    at org.apache.flink.table.api.java.StreamTableEnvironment.registerDataStream(StreamTableEnvironment.scala:136)
    at com.test.Test.main(Test.java:33)
{code}
Line 33 is
{code:java}
tEnv.registerDataStream("LeDa", lds, "name, count");
{code}
LD class is a very simple POJO

 

I've also tried
{code:java}
tEnv.fromDataStream(lds);
tEnv.registerDataStream("LeDa", lds, "name, count");
{code}
but the same result



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)