IllegalStateException Printing Plan

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

IllegalStateException Printing Plan

Rex Fenley
Hello,

I have the following code attempting to print the execution plan for my job locally. The job runs fine and Flink UI displays so I'd expect this to work.

val tableResult = userDocsTable.executeInsert(SINK_ES_PEOPLE)
println(s"execution plan:\n${this.env.getExecutionPlan()}")

but instead I end up with

Caused by: java.lang.IllegalStateException: No operators defined in streaming topology. Cannot execute.

What am I doing wrong?

--

Rex Fenley  |  Software Engineer - Mobile and Backend


Remind.com |  BLOG  |  FOLLOW US  |  LIKE US

Reply | Threaded
Open this post in threaded view
|

Re: IllegalStateException Printing Plan

r_khachatryan
Hello,

Can you share the full program? 
getExecutionPlan call is probably misplaced.

Regards,
Roman


On Tue, Nov 17, 2020 at 8:26 AM Rex Fenley <[hidden email]> wrote:
Hello,

I have the following code attempting to print the execution plan for my job locally. The job runs fine and Flink UI displays so I'd expect this to work.

val tableResult = userDocsTable.executeInsert(SINK_ES_PEOPLE)
println(s"execution plan:\n${this.env.getExecutionPlan()}")

but instead I end up with

Caused by: java.lang.IllegalStateException: No operators defined in streaming topology. Cannot execute.

What am I doing wrong?

--

Rex Fenley  |  Software Engineer - Mobile and Backend


Remind.com |  BLOG  |  FOLLOW US  |  LIKE US

Reply | Threaded
Open this post in threaded view
|

Re: IllegalStateException Printing Plan

Dawid Wysakowicz-2

Hi Rex,

The executeInsert method as the name states executes the query. Therefore after the method there is nothing in the topology and thus you get the exception.

You can either explain the userDocsTable:

userDocsTable.explain()

or you can explain a statement set if you want to postpone the execution:

StatementSet set = tEnv.createStatementSet();

set.addInsert(SINK_ES_PEOPLE, userDocsTable);

set.explain()

or you can explain SQL:

String sqlQuery = ...

tEnv.explainSql(sqlQuery);

Best,

Dawid

On 17/11/2020 09:16, Khachatryan Roman wrote:
Hello,

Can you share the full program? 
getExecutionPlan call is probably misplaced.

Regards,
Roman


On Tue, Nov 17, 2020 at 8:26 AM Rex Fenley <[hidden email]> wrote:
Hello,

I have the following code attempting to print the execution plan for my job locally. The job runs fine and Flink UI displays so I'd expect this to work.

val tableResult = userDocsTable.executeInsert(SINK_ES_PEOPLE)
println(s"execution plan:\n${this.env.getExecutionPlan()}")

but instead I end up with

Caused by: java.lang.IllegalStateException: No operators defined in streaming topology. Cannot execute.

What am I doing wrong?

--

Rex Fenley  |  Software Engineer - Mobile and Backend


Remind.com |  BLOG  |  FOLLOW US  |  LIKE US


signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: IllegalStateException Printing Plan

Rex Fenley
In reply to this post by r_khachatryan
I don't think I can share the full program.
However, the program is a long series of joines and aggs against various sources and that is the only sink.

Thanks!

On Tue, Nov 17, 2020 at 12:17 AM Khachatryan Roman <[hidden email]> wrote:
Hello,

Can you share the full program? 
getExecutionPlan call is probably misplaced.

Regards,
Roman


On Tue, Nov 17, 2020 at 8:26 AM Rex Fenley <[hidden email]> wrote:
Hello,

I have the following code attempting to print the execution plan for my job locally. The job runs fine and Flink UI displays so I'd expect this to work.

val tableResult = userDocsTable.executeInsert(SINK_ES_PEOPLE)
println(s"execution plan:\n${this.env.getExecutionPlan()}")

but instead I end up with

Caused by: java.lang.IllegalStateException: No operators defined in streaming topology. Cannot execute.

What am I doing wrong?

--

Rex Fenley  |  Software Engineer - Mobile and Backend


Remind.com |  BLOG  |  FOLLOW US  |  LIKE US



--

Rex Fenley  |  Software Engineer - Mobile and Backend


Remind.com |  BLOG  |  FOLLOW US  |  LIKE US

Reply | Threaded
Open this post in threaded view
|

Re: IllegalStateException Printing Plan

Rex Fenley
In reply to this post by Dawid Wysakowicz-2
So I tried userDocsTable.explain() however it doesn't give me the AST as JSON so that I can use the visualizer tool https://ci.apache.org/projects/flink/flink-docs-stable/dev/execution_plans.html . Also, if I get rid of executeInsert or move it to after getExecutionPlan I still end up with "Caused by: java.lang.IllegalStateException: No operators defined in streaming topology. Cannot execute." Ordering doesn't seem to make a difference here.

Anything else I can try to get the JSON?

Thanks!

On Tue, Nov 17, 2020 at 1:24 AM Dawid Wysakowicz <[hidden email]> wrote:

Hi Rex,

The executeInsert method as the name states executes the query. Therefore after the method there is nothing in the topology and thus you get the exception.

You can either explain the userDocsTable:

userDocsTable.explain()

or you can explain a statement set if you want to postpone the execution:

StatementSet set = tEnv.createStatementSet();

set.addInsert(SINK_ES_PEOPLE, userDocsTable);

set.explain()

or you can explain SQL:

String sqlQuery = ...

tEnv.explainSql(sqlQuery);

Best,

Dawid

On 17/11/2020 09:16, Khachatryan Roman wrote:
Hello,

Can you share the full program? 
getExecutionPlan call is probably misplaced.

Regards,
Roman


On Tue, Nov 17, 2020 at 8:26 AM Rex Fenley <[hidden email]> wrote:
Hello,

I have the following code attempting to print the execution plan for my job locally. The job runs fine and Flink UI displays so I'd expect this to work.

val tableResult = userDocsTable.executeInsert(SINK_ES_PEOPLE)
println(s"execution plan:\n${this.env.getExecutionPlan()}")

but instead I end up with

Caused by: java.lang.IllegalStateException: No operators defined in streaming topology. Cannot execute.

What am I doing wrong?

--

Rex Fenley  |  Software Engineer - Mobile and Backend


Remind.com |  BLOG  |  FOLLOW US  |  LIKE US



--

Rex Fenley  |  Software Engineer - Mobile and Backend


Remind.com |  BLOG  |  FOLLOW US  |  LIKE US

Reply | Threaded
Open this post in threaded view
|

Re: IllegalStateException Printing Plan

Dawid Wysakowicz-2

I think it is currently not possible to get the AST as JSON. There is a similar feature request here: https://issues.apache.org/jira/browse/FLINK-19687

Best,

Dawid

On 17/11/2020 20:59, Rex Fenley wrote:
So I tried userDocsTable.explain() however it doesn't give me the AST as JSON so that I can use the visualizer tool https://ci.apache.org/projects/flink/flink-docs-stable/dev/execution_plans.html . Also, if I get rid of executeInsert or move it to after getExecutionPlan I still end up with "Caused by: java.lang.IllegalStateException: No operators defined in streaming topology. Cannot execute." Ordering doesn't seem to make a difference here.

Anything else I can try to get the JSON?

Thanks!

On Tue, Nov 17, 2020 at 1:24 AM Dawid Wysakowicz <[hidden email]> wrote:

Hi Rex,

The executeInsert method as the name states executes the query. Therefore after the method there is nothing in the topology and thus you get the exception.

You can either explain the userDocsTable:

userDocsTable.explain()

or you can explain a statement set if you want to postpone the execution:

StatementSet set = tEnv.createStatementSet();

set.addInsert(SINK_ES_PEOPLE, userDocsTable);

set.explain()

or you can explain SQL:

String sqlQuery = ...

tEnv.explainSql(sqlQuery);

Best,

Dawid

On 17/11/2020 09:16, Khachatryan Roman wrote:
Hello,

Can you share the full program? 
getExecutionPlan call is probably misplaced.

Regards,
Roman


On Tue, Nov 17, 2020 at 8:26 AM Rex Fenley <[hidden email]> wrote:
Hello,

I have the following code attempting to print the execution plan for my job locally. The job runs fine and Flink UI displays so I'd expect this to work.

val tableResult = userDocsTable.executeInsert(SINK_ES_PEOPLE)
println(s"execution plan:\n${this.env.getExecutionPlan()}")

but instead I end up with

Caused by: java.lang.IllegalStateException: No operators defined in streaming topology. Cannot execute.

What am I doing wrong?

--

Rex Fenley  |  Software Engineer - Mobile and Backend


Remind.com |  BLOG  |  FOLLOW US  |  LIKE US



--

Rex Fenley  |  Software Engineer - Mobile and Backend


Remind.com |  BLOG  |  FOLLOW US  |  LIKE US


signature.asc (849 bytes) Download Attachment