gpt4 book ai didi

google-cloud-platform - 使用本地直接运行程序时,Apache Beam 返回 "Input values must not be mutated in any way."

转载 作者:行者123 更新时间:2023-12-02 01:37:15 31 4
gpt4 key购买 nike

我写了一个 Apache Beam DoFn

static class FillLocation extends DoFn<TrackingRequest, TrackingRequest> {
@ProcessElement
public void processElement(ProcessContext c) {
TrackingRequest rq = c.element();
rq.location = getLocationFromIP(rq.IP);
c.output(rq);
}
}

在本地测试时它给了我这个错误 PTransform ..非法变异值..类......

 Input values must not be mutated in any way.
at org.apache.beam.runners.direct.ImmutabilityEnforcementFactory$ImmutabilityCheckingEnforcement.verifyUnmodified(ImmutabilityEnforcementFactory.java:96)
at org.apache.beam.runners.direct.ImmutabilityEnforcementFactory$ImmutabilityCheckingEnforcement.afterElement(ImmutabilityEnforcementFactory.java:71)
at org.apache.beam.runners.direct.TransformExecutor.processElements(TransformExecutor.java:149)
at org.apache.beam.runners.direct.TransformExecutor.run(TransformExecutor.java:107)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

最佳答案

您的函数修改了输入 TrackingRequest 元素的位置字段。数据流不允许这样做。

doc说:

The current element of the input PCollection is returned by c.element(). It should be considered immutable. The Dataflow runtime will not mutate the element, so it is safe to cache, etc. The element should not be mutated by any of the DoFn methods, because it may be cached elsewhere, retained by the Dataflow runtime, or used in other unspecified ways.

您可以创建输入元素的副本,修改字段,然后将副本作为输出发送出去。

关于google-cloud-platform - 使用本地直接运行程序时,Apache Beam 返回 "Input values must not be mutated in any way.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43142900/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com