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_UDF
andSQL_SCALAR_PANDAS_ITER_UDF
PythonUDFs)
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