Apache Beam est le framework que Google utilise dans son service cloud Dataflow. L'argument de vente est que le traitement par lots et le traitement en continu peuvent être écrits de la même manière. Cette fois, j'ai écrit un programme minimum en Python et l'ai exécuté.
pip install apache-beam
import apache_beam as beam
from apache_beam.options.pipeline_options import PipelineOptions
#Faites d'abord un pipeline
p = beam.Pipeline(options=PipelineOptions())
# 1.Définissez le tableau sur l'entrée du pipeline (4 lignes en entrée)
lines = (p
| beam.Create([
'To be, or not to be: that is the question: ',
'Whether \'tis nobler in the mind to suffer ',
'The slings and arrows of outrageous fortune, ',
'Or to take arms against a sea of troubles, ']))
# 2.Définissez le nombre de chaînes de caractères de chaque ligne comme traitement de conversion
word_lengths = lines | beam.Map(len)
# 3.Enfin, sortez le nombre de comptage sur la sortie standard et terminez
class ExtractWordsFn(beam.DoFn):
def process(self, element):
print(element)
p_end = word_lengths | beam.ParDo(ExtractWordsFn())
p.run()
--Résultats de l'exécution sur Jupyter
<apache_beam.runners.direct.direct_runner.DirectPipelineResult at 0x7f6b69c92950>
43
42
45
43
C'est facile, mais j'ai pu exécuter le traitement par lots Apache Beam à partir de Python. Cela prend environ une heure entre l'installation, la mise en œuvre et l'exécution. ――Je souhaite exécuter le traitement en continu à l'avenir. De plus, il semble que Spark Streaming, etc. puisse être utilisé comme moteur, alors j'aimerais essayer cela également. ――J'étais heureux de pouvoir exécuter ce qui précède à partir de Bash sur Windows + Jupyter sur Windows.
Recommended Posts