Как разрабатывать и тестировать код преобразования python локально?

Каков рекомендуемый способ разработки и тестирования кода преобразования python локально, учитывая, что входные наборы данных помещаются в память локального компьютера?


person nicornk    schedule 06.11.2020    source источник


Ответы (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