Beam / Dataflow Python:AttributeError:' _UnwindowedValues'对象没有属性' sort'

时间:2017-01-27 11:15:10

标签: python google-cloud-dataflow apache-beam

我正在开发一个工作流程,使用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)]

这是使用标准beam.ParDo调用的,如下所示:

'order_by_dates' >> beam.ParDo(OrderByDate())

(k, v)元组中的数据如下所示:

('SOME CODE', {'date':'2017-01-01', 'value':1, 'date':'2016-12-14', 'value':4}) 

v是日期和值的对象

我试过切换到标准的lambda函数也会抛出相同的错误。

为什么在本地运行与数据流不同的任何想法?或建议解决。

1 个答案:

答案 0 :(得分:4)

找到一个解决方案,我需要在进行排序之前专门将v转换为列表list(v)

说明运行本地与远程之间的区别。