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