使用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。在
我知道我可以使用地图功能,但我需要了解这种行为,当我需要使用一个帕尔多在未来。在
我在这个答案的帮助下解决了这个问题。 apache beam flatmap vs map
因为我所经历的和平面地图和地图的区别是一样的。我需要做的就是把Pardo的返回打包成一个列表。在
相关问题 更多 >
编程相关推荐