Apache Beam解释ParDo behaviou

2024-09-28 19:09:28 发布

您现在位置:Python中文网/ 问答频道 /正文

使用ndjson格式的文本文件,下面的代码生成了我预期的结果。包含报价(美元)dict unnested和原始的quotes元素被删除。在

  def unnest_quotes(element):
      element['USDquotes'] = element['quotes']['USD']
      del element['quotes']
      return element

  p = beam.Pipeline(options=pipeline_options)
  ReadJson = p | ReadFromText(known_args.input,coder=JsonCoder())
  MapFormattedJson = ReadJson | 'Map Function' >> beam.Map(unnest_quotes)
  MapFormattedJson | 'Write Map Output' >> WriteToText(known_args.output,coder=JsonCoder())

然而,当我试图用一只帕尔多达到同样的效果时,我却不理解这种行为。在

^{pr2}$

这将生成一个文件,其中dict的每个键都在单独的行中,没有值,如下所示。在

"last_updated"
"name"
"symbol"
"rank"
"total_supply"
"max_supply"
"circulating_supply"
"website_slug"
"id"
"USDquotes"

这就好像Map函数生成的PCollection是full dict,而Pardo为每个键生成一个PCollection。在

我知道我可以使用地图功能,但我需要了解这种行为,当我需要使用一个帕尔多在未来。在


Tags: mapargselementdictquotesoptionsbeamknown
1条回答
网友
1楼 · 发布于 2024-09-28 19:09:28

我在这个答案的帮助下解决了这个问题。 apache beam flatmap vs map

因为我所经历的和平面地图和地图的区别是一样的。我需要做的就是把Pardo的返回打包成一个列表。在

  class UnnestQuotes(beam.DoFn):
    def process(self,element):
      element['USDquotes'] = element['quotes']['USD']
      del element['quotes']
      return [element]

相关问题 更多 >