Press "Enter" to skip to content

在编写Apache Beam管道时使用Map、Filter和CombinePerKey转换的示例

JJ Ying在Unsplash上的照片

让我们用一些真实数据来练习

Apache Beam作为高效和可移植的大数据处理管道的统一编程模型正在变得越来越受欢迎。它可以处理批处理和流处理数据。这就是名称的由来。Beam是Batch和Stream两个词的组合:

B(来自Batch) + eam(来自stream)= Beam

可移植性也是一个很棒的特性。您只需要专注于运行管道,它可以在任何地方运行,如Spark、Flink、Apex或Cloud Dataflow。您不需要为此更改逻辑或语法。

在本文中,我们将专注于使用示例学习编写一些ETL管道。我们将尝试一些使用良好数据集的转换操作,希望您也会在工作中发现所有这些转换操作都很有用。

请随意下载此公共数据集并跟随操作:

样本销售数据 | Kaggle

本练习使用Google Colab笔记本。所以,安装非常简单。只需使用以下代码行:

!pip install --quiet apache_beam

安装完成后,我创建了一个名为“data”的目录用于本次练习:

mkdir -p data

让我们深入研究今天的主题,即转换操作。首先,我们将从最简单的管道开始,即仅读取CSV文件并将其写入文本文件。

这并不像Pandas的read_csv()方法那样简单。它需要一个coder()操作。首先,在这里定义了一个CustomCoder()类,它首先将对象编码为字节字符串,然后将字节解码为其对应的对象,最后指定此编码器是否保证对值进行确定性编码。请查阅此处的文档。

如果这是您的第一个管道,请注意管道的语法。在CustomCoder()类之后,是最简单的管道。我们首先将空管道初始化为“p1”。然后,我们编写了“sales”管道,其中首先从我们之前创建的data文件夹中读取CSV文件。在Apache Beam中,每个转换操作都在…

Leave a Reply

Your email address will not be published. Required fields are marked *