我有一个只处理Map的作业来处理一个大文本文件。对每条线进行分析和分类。 MultipleOutputs用于将每个类别输出到单独的文件中。最终,所有数据都会添加到专用于每个类别的Hive表中。我目前的工作流程完成了这项工作,但有点麻烦。我将添加几个类别,并认为我可以简化流程。我有几个想法,正在寻找一些意见。
当前工作流程:
- 仅限地图的作业将大文件划分为多个类别。输出如下:
醇>
categ1-M-00000
categ1-M-00001
categ1-M-00002
categ2-M-00000
categ2-M-00001
categ2-M-00002
categ3-M-00000
categ3-M-00001
categ3-M-00002
- 外部(非Hadoop)进程将输出文件复制到每个类别的单独目录中。
醇>
categ1 / 00000
categ1 / 00001
categ1 / 00002
categ2 / 00000
categ2 / 00001
categ2 / 00002
categ3 / 00000
categ3 / 00001
categ3 / 00002
- 为每个类别创建一个外部表,然后将数据插入该类别的永久Hive表中。
醇>
可能的新工作流程
- 使用Spark循环输出文件,并根据文件名将数据插入相应的永久Hive表中。
- 使用HCatalog直接从Mapper将数据插入永久Hive表,或者可能是专用于每个类别的Reducer或Reducers集。