You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Dawid Wysakowicz (JIRA)" <ji...@apache.org> on 2018/08/22 09:28:00 UTC

[jira] [Closed] (FLINK-10197) flink CEP error when use sql

     [ https://issues.apache.org/jira/browse/FLINK-10197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dawid Wysakowicz closed FLINK-10197.
------------------------------------
    Resolution: Not A Bug

> flink CEP error when use sql
> ----------------------------
>
>                 Key: FLINK-10197
>                 URL: https://issues.apache.org/jira/browse/FLINK-10197
>             Project: Flink
>          Issue Type: Bug
>          Components: CEP
>    Affects Versions: 1.6.0
>            Reporter: sean.miao
>            Priority: Major
>
> When I used sql to write the flink cep task, I encountered some problems. However, calcite-1.16 supports the use of match_recognize to write cep.
> my code :
> {code:java}
> // set up execution environment
>       ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
>       BatchTableEnvironment tEnv = TableEnvironment.getTableEnvironment(env);
>       DataSet<WC> input = env.fromElements(
>          new WC("1", 1),
>          new WC("2", 2),
>          new WC("1", 3),
>          new WC("2", 3),
>          new WC("2", 2),
>          new WC("1", 1));
>       // register the DataSet as table "WordCount"
>       tEnv.registerDataSet("t", input, "word, id");
>       final String sql = "select * \n"
>             + "  from t match_recognize \n"
>             + "  (\n"
>             + "       measures STRT.word as  start_word ,"
>             + "    FINAL LAST(A.id) as A_id \n"
>             + "    pattern (STRT A+) \n"
>             + "    define \n"
>             + "      A AS A.word = '1' \n"
>             + "  ) mr";
> //     run a SQL query on the Table and retrieve the result as a new Table
> //    Table table = tEnv.sqlQuery(
> //       "SELECT word, SUM(frequency) as frequency FROM WordCount GROUP BY word");
> //    tEnv.sqlUpdate(sql);
>       tEnv.sqlQuery(sql);
> {code}
> ERROR:
> {code:java}
> Exception in thread "main" org.apache.flink.table.api.ValidationException: SQL validation failed. From line 0, column 0 to line 7, column 17: No match found for function signature PREV(<CHARACTER>, <NUMERIC>)
> at org.apache.flink.table.calcite.FlinkPlannerImpl.validate(FlinkPlannerImpl.scala:91)
> at org.apache.flink.table.api.TableEnvironment.sqlQuery(TableEnvironment.scala:652)
> at TableSQL.WordCountSQL.main(WordCountSQL.java:71)
> Caused by: org.apache.calcite.runtime.CalciteContextException: From line 0, column 0 to line 7, column 17: No match found for function signature PREV(<CHARACTER>, <NUMERIC>)
> 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.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)
> at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:803)
> at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:788)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4706)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.handleUnresolvedFunction(SqlValidatorImpl.java:1690)
> at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:278)
> at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:223)
> at org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:5432)
> at org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:5419)
> at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:138)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.deriveTypeImpl(SqlValidatorImpl.java:1606)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.deriveType(SqlValidatorImpl.java:1591)
> at org.apache.calcite.sql.type.InferTypes$1.inferOperandTypes(InferTypes.java:51)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:1777)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:1783)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validateDefinitions(SqlValidatorImpl.java:5030)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validateMatchRecognize(SqlValidatorImpl.java:4903)
> at org.apache.calcite.sql.validate.MatchRecognizeNamespace.validateImpl(MatchRecognizeNamespace.java:38)
> at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:947)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:928)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:2975)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:2960)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3219)
> at org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60)
> at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:947)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:928)
> at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:226)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:903)
> at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:613)
> at org.apache.flink.table.calcite.FlinkPlannerImpl.validate(FlinkPlannerImpl.scala:87)
> ... 2 more
> Caused by: org.apache.calcite.sql.validate.SqlValidatorException: No match found for function signature PREV(<CHARACTER>, <NUMERIC>)
> 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.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)
> at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:572)
> ... 33 more
> {code}
>  
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)