Apache Луч: - Неожиданный вывод Пардо - PullRequest
1 голос
/ 16 марта 2020

Как новичок ie, я создал конвейер с парой функций Transform, после ввода из файла он превращает код в нижний регистр. Когда я передал этот результат на следующий этап, он отображается не в виде одной строки, а в виде нескольких символов. Ниже приведен мой код:

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 в понедельник

Когда я запускаю приведенный выше код, он печатает следующее, а не наоборот:

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()}], тогда он возвращается как одна строка Что здесь происходит?

...