C/C++程序可以调用mapreduce程序吗?

Can a C/C++ program call a mapreduce program

本文关键字:程序 mapreduce 调用 C++      更新时间:2023-10-16

我对Hadoop领域和C/C++编程相当陌生。我主要来自Java领域。有几个C++程序可以实现贪婪、最近邻等算法。我正在使用 hadoop并行化算法部分,尽管我不想将整个C++程序转换为 mapreduce。是否可以从C++程序环境中调用mapreduce程序(将实现某些算法)?谢谢阿尔蒂

是的,这是很有可能的。

您需要编写两个类; MapTask实现一个映射函数来处理key/value对生成一组中间key/value对,ReduceTask实现一个reduce函数来合并与同一中间键关联的所有中间值。

class map_task
{
  public:
    typedef std::string   key_type;
    typedef std::ifstream value_type;
    typedef std::string   intermediate_key_type;
    typedef unsigned      intermediate_value_type;
    map_task(job::map_task_runner &runner);
    void operator()(key_type const &key, value_type const &value);
};
class reduce_task
{
  public:
    typedef std::string  key_type;
    typedef size_t       value_type;
    reduce_task(job::reduce_task_runner &runner);
    template<typename It>
    void operator()(typename map_task::intermediate_key_type const &key, It it, It ite)
};