我正在开发工作流流程,以使用Apache Beam的Python SDK在Google Cloud Dataflow上运行。
在本地运行时,工作流成功完成,没有任何错误,并且数据输出完全符合预期。
当我尝试在Dataflow服务上运行时,它引发以下错误:
AttributeError: '_UnwindowedValues' object has no attribute 'sort'
来自以下代码:
class OrderByDate(beam.DoFn):
def process(self, context):
(k, v) = context.element
v.sort(key=operator.itemgetter('date'))
return [(k, v)]
Run Code Online (Sandbox Code Playgroud)
并使用如下标准调用该方法beam.ParDo:
'order_by_dates' >> beam.ParDo(OrderByDate())
Run Code Online (Sandbox Code Playgroud)
(k, v)元组中的数据如下例所示:
('SOME CODE', {'date':'2017-01-01', 'value':1, 'date':'2016-12-14', 'value':4})
Run Code Online (Sandbox Code Playgroud)
随着v是日期和值的对象
我尝试过切换到标准lambda函数也会引发相同的错误。
有什么想法为什么它在本地运行与在Dataflow上运行不同?或建议解决。