案例研究:Parquet转换

假设您想使用列格式Parquet在HDFS上存储数据。但是Data Collector没有Parquet数据格式。你怎么做呢?

事件框架正是为此目的而创建的。只需将事件流添加到管道中,即可将Avro文件自动转换为Parquet。

您可以使用Spark执行器来触发Spark应用程序,也可以使用MapReduce执行器来触发MapReduce作业。本案例研究使用MapReduce执行器。

这只是几个简单的步骤:

  1. 创建您要使用的管道。

    像其他任何管道一样,使用所需的源端和处理器。然后,配置Hadoop FS以将Avro数据写入HDFS。

    每次关闭文件时,Hadoop FS目标端都会生成事件。这是完美的,因为我们只想在文件完全写入后才将其转换为Parquet。

    注意:为避免运行不必要数量的MapReduce作业,请配置目标端以创建与目标系统可以轻松处理的文件一样大的文件。

  2. 配置Hadoop FS以生成事件。

    在目标的“General 选项卡上,选择“Produce Events 属性。

    选择此属性后,事件输出流将变得可用,并且每次关闭输出文件时,Hadoop FS都会生成事件记录。事件记录包括关闭文件的文件路径。

  3. 将Hadoop FS事件输出流连接到MapReduce执行器。

    现在,每次MapReduce执行器收到一个事件时,它都会触发您配置为运行的作业。

  4. 配置MapReduce执行器以运行将完成的Avro文件转换为Parquet的作业。

    在MapReduce执行器中,配置MapReduce配置详细信息,然后选择Avro to Parquet作业类型。在“Avro Conversion选项卡上,配置文件输入和输出目录信息以及相关属性:

    “Input Avro File”属性默认${record:value('/filepath')},运行在Hadoop的FS文件关闭事件记录中指定的文件的作业。

    然后,在“Avro to Parquet选项卡上,有选择地配置高级Parquet属性。

将此事件流添加到管道后,每次Hadoop FS目标关闭文件时,它都会生成一个事件。当MapReduce执行器收到事件时,它将启动MapReduce作业,该作业将Avro文件转换为Parquet。简单!