鉴于输入数据集适合本地计算机的内存,建议在本地开发和测试python转换代码的推荐方法是什么?
答案 0 :(得分:3)
不需要模拟模拟包的最简单方法就是使用pyspark函数将逻辑提取到纯python中,该函数接收数据帧作为输入并返回数据帧。
即:
# 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对其进行测试。
即:
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(或您使用的任何测试框架)中提供有效的spark上下文作为固定装置