如何在map reduce中选择最佳的键?

o2g1uqev  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(261)

我正在处理股票交易日志文件。每一行表示一个有20个制表符分隔值的交易。我正在使用hadoop处理这个文件,并对交易进行一些基准测试。现在对于每一行,我必须执行单独的基准计算,因此不需要map reduce中的reduce函数。为了执行每一行的基准计算,我必须查询sybase数据库,以获得与该行对应的一些标准值。数据库按每行的两个值[交易id和股票id]编制索引。现在我的问题是,我应该在mapreduce程序中使用tradeid和stockid作为键,还是应该选择其他值/[值的组合]作为键。

huwehgph

huwehgph1#

因此,对于每一行输入,您将查询一个数据库,然后分别对每一行执行基准计算。完成基准计算后,您将输出每一行的基准值。
在这种情况下,您可以根本不使用缩减器,也可以使用标识缩减器。
因此,map函数将读入一行,然后向sybase数据库发出标准值查询,然后执行基准计算。因为您希望输出每一行的基准值,所以可以让map函数将该行作为键输出,将基准值作为值输出,即 <line, benchmark value> 您的map函数如下所示:(我假设您的基准值是一个整数)

public void map(Text key, IntWritable value, Context context) throws Exception {
    String line = value.toString();   //this will be your key in the final output

     /* 
         Perform operations on the line

      */

      /* 

         standard values = <return value from sybase query.>;

      */

      /*Perform benchmark calculations and obtain benchmark values */

      context.write(line,benchmarkValue);     

}

相关问题