Получил следующий фрагмент кода pyspark:
import pyspark.sql.functions as F
null_or_unknown_count = df.sample(0.01).filter(
F.col('env').isNull() | (F.col('env') == 'Unknown')
).count()
В тестовом коде фальсифицируется фрейм данных, поэтому я пытаюсь установить значение return_value для этого вызова следующим образом:
from unittest import mock
from unittest.mock import ANY
@mock.patch('pyspark.sql.DataFrame', spec=pyspark.sql.DataFrame)
def test_null_or_unknown_validation(self, mock_df):
mock_df.sample(0.01).filter(ANY).count.return_value = 250
Но это не так:
File "/usr/local/lib/python3.7/site-packages/pyspark/sql/functions.py", line 44, in _
jc = getattr(sc._jvm.functions, name)(col._jc if isinstance(col, Column) else col)
AttributeError: 'NoneType' object has no attribute '_jvm'
Также пробовал mock_df.sample().filter().count.return_value = 250
, что выдает ту же ошибку.
Как правильно насмехаться над фильтром, т.е. F.col('env').isNull() | (F.col('env') == 'Unknown')
??