flink sql实例, TableException: Create BatchTableEnvironment failed.报错

    技术2022-07-11  70

    package SQL; import org.apache.flink.api.java.DataSet; import org.apache.flink.api.java.ExecutionEnvironment; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.table.api.Table; import org.apache.flink.table.api.TableConfig; import org.apache.flink.table.api.java.BatchTableEnvironment; import org.apache.flink.types.Row; /** * @Author you guess * @Date 2020/6/27 17:21 * @Version 1.0 * @Desc */ public class DataSetSelectTest1 { public static void main(String[] args) throws Exception { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); DataSet<Tuple2<Long, String>> orderSet = env.fromElements( Tuple2.of(2L, "xiaoli"), Tuple2.of(2L, "xiaohong"), Tuple2.of(1L, "shinelon"), Tuple2.of(1L, "zhangsan"), Tuple2.of(3L, "hhhhhh")); //EnvironmentSettings bsSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build(); //报错NoMatchingTableFactoryException //BatchTableEnvironment tableEnv = (BatchTableEnvironment) TableEnvironment.create(bsSettings); //正确 //BatchTableEnvironment tableEnv = BatchTableEnvironment.create(env, TableConfig.getDefault()); //正确 BatchTableEnvironment tableEnv = BatchTableEnvironment.create(env, TableConfig.getDefault()); //注册表 tableEnv.registerDataSet("orderSet", orderSet, "id , name"); //通过sql查询注册的表 Table t2 = tableEnv.sqlQuery("select id , count(name) as cnt from orderSet group by id order by id asc"); tableEnv.toDataSet(t2, Row.class).print(); } } /* 输出: 1,2 2,2 3,1 */

    flink 1.9,2 java1.8

    报错:

    Exception in thread "main" org.apache.flink.table.api.TableException: Create BatchTableEnvironment failed.     at org.apache.flink.table.api.java.BatchTableEnvironment.create(BatchTableEnvironment.java:338)     at SQL.DataSetSelectTest1.main(DataSetSelectTest1.java:62) Caused by: java.lang.reflect.InvocationTargetException     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)     at org.apache.flink.table.api.java.BatchTableEnvironment.create(BatchTableEnvironment.java:336)     ... 1 more Caused by: java.lang.NoClassDefFoundError: scala/Serializable     at java.lang.ClassLoader.defineClass1(Native Method)     at java.lang.ClassLoader.defineClass(ClassLoader.java:756)     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)     at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)     at java.net.URLClassLoader.access$100(URLClassLoader.java:74)     at java.net.URLClassLoader$1.run(URLClassLoader.java:369)     at java.net.URLClassLoader$1.run(URLClassLoader.java:363)     at java.security.AccessController.doPrivileged(Native Method)     at java.net.URLClassLoader.findClass(URLClassLoader.java:362)     at java.lang.ClassLoader.loadClass(ClassLoader.java:418)     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)     at java.lang.ClassLoader.loadClass(ClassLoader.java:351)     at org.apache.flink.table.expressions.PlannerTypeInferenceUtilImpl.<clinit>(PlannerTypeInferenceUtilImpl.java:47)     at org.apache.flink.table.api.internal.TableEnvImpl.<init>(TableEnvImpl.scala:67)     at org.apache.flink.table.api.internal.BatchTableEnvImpl.<init>(BatchTableEnvImpl.scala:63)     at org.apache.flink.table.api.java.internal.BatchTableEnvironmentImpl.<init>(BatchTableEnvironmentImpl.scala:46)     ... 6 more Caused by: java.lang.ClassNotFoundException: scala.Serializable     at java.net.URLClassLoader.findClass(URLClassLoader.java:382)     at java.lang.ClassLoader.loadClass(ClassLoader.java:418)     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)     at java.lang.ClassLoader.loadClass(ClassLoader.java:351)     ... 22 more

    Process finished with exit code 1  

    报错的pom如下:

    <properties> <flink.version>1.9.2</flink.version> </properties> <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.11</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-scala_2.11</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients_2.11</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-wikiedits_2.11</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-api-java-bridge_2.11</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-api-scala-bridge_2.11</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-table-planner --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-planner_2.12</artifactId> <version>1.9.2</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table_2.11</artifactId> <version>1.7.0</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-scala_2.11</artifactId> <version>1.7.0</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-planner-blink_2.11</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.40</version> </dependency> <!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library --> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.13.1</version> </dependency> </dependencies>

     

     

    正确pom如下:

    <!--公共依赖版本号--> <properties> <flink.version>1.9.2</flink.version> <flink.scala.version>2.11</flink.scala.version> </properties> <dependencies> <!--flink start--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-core</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-scala --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-scala_${flink.scala.version}</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-scala --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-scala_${flink.scala.version}</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-jdbc --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-jdbc_${flink.scala.version}</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kafka --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka_${flink.scala.version}</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kafka --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-table-common --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-common</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-table-api-scala --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-api-scala_${flink.scala.version}</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-table-planner --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-planner_${flink.scala.version}</artifactId> <version>${flink.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-clients --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients_${flink.scala.version}</artifactId> <version>${flink.version}</version> </dependency> <!--flink end--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.40</version> </dependency> </dependencies>

    参考

    https://blog.csdn.net/myhes/article/details/103758484

    Processed: 0.013, SQL: 9