Hyukjin Kwon created SPARK-58073:
------------------------------------

             Summary: Avoid eagerly importing numpy in 
StatefulProcessorApiClient
                 Key: SPARK-58073
                 URL: https://issues.apache.org/jira/browse/SPARK-58073
             Project: Spark
          Issue Type: Bug
          Components: Structured Streaming, PySpark
    Affects Versions: 4.2.0, 5.0.0
            Reporter: Hyukjin Kwon


SPARK-57760 hoisted {{import numpy as np}} to module level in 
{{python/pyspark/sql/streaming/stateful_processor_api_client.py}} (to define 
{{has_numpy}} and {{_normalize_state_value}} once). That module is on the eager 
{{import pyspark}} chain (pyspark -> sql -> context -> session -> dataframe -> 
streaming -> stateful_processor -> stateful_processor_api_client), so it now 
imports numpy during {{import pyspark}}.

This breaks {{pyspark.tests.test_import_spark}} (added in SPARK-56242), which 
asserts that no 3rd party package is imported during {{import pyspark}}:

{code}
AssertionError: Unexpected 3rd party package 'numpy' imported during 'import 
pyspark'
{code}

As a result, the following scheduled jobs fail:
* {{Build / Python-only (Minimum dependencies of PySpark)}} on master
* {{Build / Java21 (Scala 2.13, JDK 21)}} on branch-4.x

The offending commit is present on both master (0af85eee8171) and branch-4.x 
(181acbd8db57), so the fix needs to be backported to branch-4.x.

Fix: resolve {{has_numpy}} via {{importlib.util.find_spec("numpy")}} (which 
does not import numpy) and import numpy lazily inside 
{{_normalize_state_value}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to