pyspark - 如何在 palantir Foundry 中使用 transform_df 写回数据帧?
问题描述
我创建了一个库来更新输入数据集列的描述。该函数将三个参数作为输入(input_dataset、output_dataset、配置文件)并最终写回输出数据集的描述。所以现在我们想在各种用例中导入这个库。如何处理我们正在编写 spark 转换的情况,即通过 transform_df 获取输入,因为这里我们不能将输出分配给输出变量。在那种情况下,我如何调用我的描述库函数?在 palantir 代工厂中如何处理这些情况。有什么建议么?
解决方案
@transform_df
装饰器目前不支持此方法;你现在必须使用@transform
装饰器。
这背后的原因是认识到需要更广泛地访问元数据 API,比如@transform
装饰器已经允许的。因此,将其保留在那里似乎更符合这种模式,因为@transform_df
装饰器本质上是更高级别的。
您总是可以简单地从...转移您的转换
from transforms.api import transform_df, Input, Output
@transform_df(
Output("/my/output"),
my_input("/my/input"),
)
def my_compute_function(my_input):
df = my_input
# ... logic ....
return my_input
...至...
from transforms.api import transform, Input, Output
@transform(
my_output=Output("/my/output"),
my_input=Input("/my/input")
)
def my_compute_function(my_input, my_output):
df = my_input.dataframe()
# ... logic ....
my_output.write_dataframe(df)
...其中只需要更改 6 行代码。
推荐阅读
- python - Python - Ctypes CFUNCTYPE 在 ARM 设备中崩溃
- google-cloud-platform - 是否可以使用内部 IP 创建 GKE 入口控制器?
- android - 如何将 POST 请求的正文读入 Android WebView
- aws-lambda - 你如何在 lambda 之外进行异步设置?
- html - Bootstrap 4.1 之间的浮动徽标
- mysql - 通过其用户获取属于某个组的用户数和属于该组的订单数
- android - 房间:带有字符串主键的 Fts4
- javascript - 即使我没有使用它,也无法在 react-native 中找到变量错误
- c# - 使用几乎相同的类数据填充一个类
- celery - 我可以使用数据类(或类似的)作为 Celery 任务的参数和返回值吗?