apache-beam - 在 ParDo 中在哪里初始化可重用对象?
问题描述
我的梁作业中的 ParDo 示例(使用 Dataflow 运行器运行):
class StreamEventToJsonConverter : DoFn<MyClass, String>() {
@ProcessElement
fun processElement(@Element element: MyClass, receiver: OutputReceiver<String>) {
val gson = Gson()
val jsonValue = gson.toJson(element)
receiver.output(jsonValue)
}
}
我的问题是:我应该在 processElement 函数中初始化 Gson 对象吗?
它是每个工人只初始化一次还是每次新元素进入函数时初始化一次(似乎被过度杀伤了)?
鉴于 Gson 对象不可序列化。
谢谢你。
解决方案
原来我可以通过DoFn.Setup函数来做:
用于准备用于处理元素包的实例的方法的注释。
这是初始化临时内存资源(例如网络连接)的好地方。然后可以在 DoFn.Teardown 中处理资源。
推荐阅读
- oauth-2.0 - 如何使用身份验证服务器颁发的 JWT 令牌来允许访问另一个应用程序?
- makefile - 允许用户覆盖 CFLAGS、CXXFLAGS 和好友
- swift - Travis swift库编译错误
- swift - 将 3D 模型及其节点导入 Xcode
- java - 通过 maven 将环境变量传递给 config.properties 文件
- c# - C# REST API,模型的子节点应该是同一类型,并且路由必须递归定义
- java - 如何比较两个哈希图
- wordpress - 在wordpress中提交表单后如何显示成功消息?
- amazon-web-services - 使用 AWS LightSail pem 文件执行 SCP 的问题
- python - 使用 python twisted 的服务器客户端