将Hadoop作业的结果添加到Hive表

时间:2017-02-08 15:58:01

标签: hadoop apache-spark hive hcatalog qubole

我有一个只处理Map的作业来处理一个大文本文件。对每条线进行分析和分类。 MultipleOutputs用于将每个类别输出到单独的文件中。最终,所有数据都会添加到专用于每个类别的Hive表中。我目前的工作流程完成了这项工作,但有点麻烦。我将添加几个类别,并认为我可以简化流程。我有几个想法,正在寻找一些意见。

当前工作流程:

  1. 仅限地图的作业将大文件划分为多个类别。输出如下:
    • 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
    1. 外部(非Hadoop)进程将输出文件复制到每个类别的单独目录中。
      • categ1 / 00000
        categ1 / 00001
        categ1 / 00002
        categ2 / 00000
        categ2 / 00001
        categ2 / 00002
        categ3 / 00000
        categ3 / 00001
        categ3 / 00002
      1. 为每个类别创建一个外部表,然后将数据插入该类别的永久Hive表中。
      2. 可能的新工作流程

        • 使用Spark循环输出文件,并根据文件名将数据插入相应的永久Hive表中。
        • 使用HCatalog直接从Mapper将数据插入永久Hive表,或者可能是专用于每个类别的Reducer或Reducers集。

1 个答案:

答案 0 :(得分:0)

对于MultipleOutputs,将输出路径设置为hive外部表所在的基本文件夹。 然后将数据写入"<table_name>/<filename_prefix>"。 您的数据将位于目标表中。