| .. ################################################################################ |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| ################################################################################ |
| |
| |
| ============== |
| Compiled Plans |
| ============== |
| |
| CompiledPlan |
| ------------ |
| |
| Represents an immutable, fully optimized, and executable entity that has been compiled from a |
| Table & SQL API pipeline definition. It encodes operators, expressions, functions, data types, |
| and table connectors. |
| |
| Every new Flink version might introduce improved optimizer rules, more efficient operators, |
| and other changes that impact the behavior of previously defined pipelines. In order to ensure |
| backwards compatibility and enable stateful streaming job upgrades, compiled plans can be |
| persisted and reloaded across Flink versions. See the |
| `website documentation <https://flink.apache.org/documentation/>`_ for more information about |
| provided guarantees during stateful pipeline upgrades. |
| |
| A plan can be compiled from a SQL query using |
| :func:`~pyflink.table.TableEnvironment.compile_plan_sql`. |
| It can be persisted using :func:`~pyflink.table.CompiledPlan.write_to_file` or by manually |
| extracting the JSON representation with func:`~pyflink.table.CompiledPlan.as_json_string`. |
| A plan can be loaded back from a file or a string using |
| :func:`~pyflink.table.TableEnvironment.load_plan` with a :class:`~pyflink.table.PlanReference`. |
| Instances can be executed using :func:`~pyflink.table.CompiledPlan.execute`. |
| |
| Depending on the configuration, permanent catalog metadata (such as information about tables |
| and functions) will be persisted in the plan as well. Anonymous/inline objects will be |
| persisted (including schema and options) if possible or fail the compilation otherwise. |
| For temporary objects, only the identifier is part of the plan and the object needs to be |
| present in the session context during a restore. |
| |
| JSON encoding is assumed to be the default representation of a compiled plan in all API |
| endpoints, and is the format used to persist the plan to files by default. |
| For advanced use cases, :func:`~pyflink.table.CompiledPlan.as_smile_bytes` provides a binary |
| format representation of the compiled plan. |
| |
| .. note:: |
| Plan restores assume a stable session context. Configuration, loaded modules and |
| catalogs, and temporary objects must not change. Schema evolution and changes of function |
| signatures are not supported. |
| |
| .. currentmodule:: pyflink.table |
| |
| .. autosummary:: |
| :toctree: api/ |
| |
| CompiledPlan.as_json_string |
| CompiledPlan.as_smile_bytes |
| CompiledPlan.write_to_file |
| CompiledPlan.get_flink_version |
| CompiledPlan.print_json_string |
| CompiledPlan.execute |
| CompiledPlan.explain |
| CompiledPlan.print_explain |
| |
| PlanReference |
| ------------- |
| |
| Unresolved pointer to a persisted plan. |
| |
| A plan represents a static, executable entity that has been compiled from a Table & SQL API |
| pipeline definition. |
| |
| You can load the content of this reference into a :class:`~pyflink.table.CompiledPlan` |
| using :func:`~pyflink.table.TableEnvironment.load_plan` with a |
| :class:`~pyflink.table.PlanReference`, or you can directly load and execute it with |
| :func:`~pyflink.table.TableEnvironment.execute_plan`. |
| |
| .. seealso:: :class:`~pyflink.table.CompiledPlan` |
| |
| .. currentmodule:: pyflink.table |
| |
| .. autosummary:: |
| :toctree: api/ |
| |
| PlanReference.from_file |
| PlanReference.from_json_string |
| PlanReference.from_smile_bytes |