ArrowEvalPython Logical Operator¶
ArrowEvalPython is a BaseEvalPython logical operator to execute PythonUDFs with SQL_SCALAR_PANDAS_UDF and SQL_SCALAR_PANDAS_ITER_UDF eval types.
ArrowEvalPython is planned to ArrowEvalPythonExec physical operator (by PythonEvals execution planning strategy).
Creating Instance¶
ArrowEvalPython takes the following to be created:
- PythonUDFs
- Result Attributes
- Child LogicalPlan
- PythonUDF Eval Type
ArrowEvalPython is created when:
- ExtractPythonUDFs logical optimization is executed (with
SQL_SCALAR_PANDAS_UDFandSQL_SCALAR_PANDAS_ITER_UDFPythonUDFs)
PythonUDF Eval Type¶
ArrowEvalPython is given a PythonUDF eval type when created that can be one of the two int values.
| PythonEvalType | Int Value |
|---|---|
SQL_SCALAR_PANDAS_UDF | 200 |
SQL_SCALAR_PANDAS_ITER_UDF | 204 |
Logical Optimizations¶
ArrowEvalPython is optimized using the following logical optimizations:
PushPredicateThroughNonJoin(canPushThrough)- LimitPushDown