Каков рекомендуемый способ разработки и тестирования кода преобразования python локально, учитывая, что входные наборы данных помещаются в память локального компьютера?
Как разрабатывать и тестировать код преобразования python локально?
Ответы (1)
Самый простой способ, который не требует, чтобы вы издевались над пакетом преобразований, - это просто извлечь вашу логику в чистый python с функцией pyspark, которая получает кадры данных в качестве входных данных и возвращает кадр данных.
i.e.:
# yourtransform.py
from my_business_logic import magic_super_complex_computation
@transform_df(
Output("/foo/bar/out_dataset"),
input1=Input("/foo/bar/input1"),
input2=Input("/foo/bar/input2"))
def my_transform(input1, input2):
return magic_super_complex_computation(input1, input2)
Теперь вы можете импортировать в свой тест magic_super_complex_computation
и протестировать его только с помощью pyspark.
i.e:
from my_business_logic import magic_super_complex_computation
def test_magic_super_complex_computation(spark_context):
df1 = load_my_data_as_df(spark_context, "input1")
df2 = load_my_data_as_df(spark_context, "input2")
result = magic_super_complex_computation(input1, input2).collect()
assert len(result) == 123
Обратите внимание, что для этого требуется, чтобы вы предоставили действительный контекст искры в качестве фикстуры в вашем pytest (или любой другой среде тестирования, которую вы используете).
person
fmsf
schedule
06.11.2020