pyspark - 如何在本地开发和测试 python 转换代码?
问题描述
鉴于输入数据集适合本地机器的内存,在本地开发和测试 python 转换代码的推荐方法是什么?
解决方案
不需要您模拟转换包的最简单方法是将您的逻辑提取到具有 pyspark 函数的纯 python 中,该函数接收数据帧作为输入并返回数据帧。
IE:
# 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 对其进行测试。
IE:
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 上下文作为夹具
推荐阅读
- c# - Unity [Command] 功能不执行 - UNet
- javascript - html,js:使用来自arraylist的值填充表单字段并将此arraylist保存在servlet中
- jquery - 如何根据数据属性隐藏 div
- tsql - T-SQL (AVG) 每 10 行
- macos - 在 mac 上进行选择以看起来像选择窗口
- jquery - Vue2 + jQuery + jQuery UI
- triggers - 是否可以在 Zabbix 中调试特定的触发器?
- actions-on-google - 如何触发电子邮件发送
- laravel - 每个套接字地址只有一种用法 - Laravel
- javascript - 级联下拉列表显示字典/数组