java - C/C++程序可以调用mapreduce程序吗

标签 java c++ hadoop mapreduce

我对hadoop域以及C / C++编程还很陌生。我主要来自Java域。有几个C++程序实现了贪心算法,最近邻居算法等算法。尽管我不希望将整个C++程序转换为mapreduce,但我正在使用hadoop并行化算法部分。是否可以从C++程序环境中调用mapreduce程序(将实现某些算法)?
谢谢,
Aarthi

最佳答案

是的,这很有可能。

您需要编写两个类; 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)
};

关于java - C/C++程序可以调用mapreduce程序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27925638/

相关文章:

java - 如何在声明泛型的ArrayList中添加多个对象?

c++ - 我可以将operator ==虚拟化以实现平等吗?

hadoop - Hive 索引无法重建 - DAG 由于顶点故障而失败

hadoop - 从日志存档创建Spark Dstream

java - maven - 关于多模块(jar、war...)项目使用的建议

java - 使用 Java 从文件中读取日期并更新数据库表

java - ThreadPoolTask​​Executor 中的 ConcurrentModificationException 错误

c++ - 检索磁盘读/写最大速度(以编程方式)

c++ - 创建标题中带有时间戳的文本文件

hadoop - Hive 中的 'InputFormat, OutputFormat' 和 'Stored as' 有什么区别?