地图转换中的“键”值不正确

Vib*_*ain 5 python apache-beam

apache-beam==2.23.0 Python 3.8.5 DirectRunner

在我的 Map 转换中,我试图为每个元组元素提取 Key 值(在 GroupByKey 转换上游之后)。但是输出总是一个字符串“KeyParam”而不是实际的键值

这是最少的代码:

流水线代码

p| beam.Create([("2","elem2.1"),("1","elem1.1"),("1","elem1.2")]) \
|"group" >>beam.GroupByKey() \
| "log_PCollection_AfterGrouped" >> beam.Map(myRawProcessor.myReader) \
Run Code Online (Sandbox Code Playgroud)

地图变换代码

class myRawProcessor():
    @classmethod
    def myReader(self,e,
              timestamp=beam.DoFn.TimestampParam,
              window=beam.DoFn.WindowParam,
              watermark=beam.DoFn.WatermarkEstimatorParam,
              key=beam.DoFn.KeyParam,
               *args, **kwargs):
        print("=== === ===")
        print(e)
        print(key)
        return e
Run Code Online (Sandbox Code Playgroud)

输出

> === === === 
> ('2', ['elem1.1']) 
> KeyParam -----> EXPECTED :: '2'
> === === === 
> ('1', ['elem1.2', 'elem1.3']) 
> KeyParam ----> EXPECTED :: '1'

Run Code Online (Sandbox Code Playgroud)

rob*_*twb 1

这是一个错误,请参阅BEAM-10780。同时,避免DoFn.KeyParam在这种情况下使用。