首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Beam:- Pardo的意外输出

Apache Beam:- Pardo的意外输出
EN

Stack Overflow用户
提问于 2020-03-16 17:52:58
回答 1查看 154关注 0票数 1

作为新手,我创建了一个具有几个转换函数的管道,在从文件中输入之后,它会将代码转换为小写。当我将这个结果传递到下一个阶段时,它不是一个字符串,而是多个字符。下面是我的代码:

代码语言:javascript
复制
import apache_beam as beam
from apache_beam.options.pipeline_options import PipelineOptions


class ToLower(beam.DoFn):
    def process(self, element):
        #return [{'Data': element.lower()}]
        return element.lower()


class ToReverse(beam.DoFn):
    def process(self, element):
        print(element)
        return element


if __name__ == '__main__':
    in_file = 'news.txt'
    options = PipelineOptions()

    with beam.Pipeline(options=PipelineOptions()) as p:
        r = (
            p | beam.io.ReadFromText(in_file)
            | beam.ParDo(ToLower())
            | beam.ParDo(ToReverse())
        )

假设news.txt的内容如下:

巴基斯坦的

冠状病毒病例在一天内翻了一番,周一的总数为106例。

当我运行上面的代码时,它会打印以下内容,而不是相反:

代码语言:javascript
复制
c
o
r
o
n
a
v
i
r
u
s

c
a
s
e
s

i
n

p
a
k
i
s
t
a
n

d
o
u
b
l
e
d

i
n

o
n
e

d
a
y

w
i
t
h

t
o
t
a
l

t
a
l
l
y

a
t

1
0
6

o
n

m
o
n
d
a
y

当我将ToLower中的返回更改为return [{'Data': element.lower()}]时,它将返回为一个字符串行。这里发生什么事情?

EN

回答 1

Stack Overflow用户

发布于 2022-08-11 11:37:22

基于Apache文档(https://beam.apache.org/documentation/transforms/python/elementwise/pardo/):

这意味着梁框架查看输出元素,并尝试将输出元素转换为零或多个元素。

Python字符串是Unicode代码点的序列。因此,即使lower()函数返回一个元素,该元素也会由Beam框架转换为元素序列。

希望这能澄清。

很少有其他相关的文章:

Difference between beam.ParDo and beam.Map in the output type?

ParDo vs FlatMap in Apache Beam?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60710892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档