`
yuanyu5237
  • 浏览: 162850 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C语言实现的mapreduce小程序

 
阅读更多

 

#include <stdio.h>

typedef int (*mapFunction)(int);
typedef int (*reduceFunction)(int,int);

#define ERROR -1

void map(mapFunction func, int *list, int len)
{
	int i;
	for(i=0; i<len; i++)
	{
		list[i]=func(list[i]);
	}
}

int reduce(reduceFunction func, int *list, int len)
{
	if(len <= 0)
	{
		return ERROR;
	}
	int retVal = 0;
	int i;
	for(i=0; i<len; i++)
	{
		retVal=func(retVal, list[i]);
	}
	return retVal;
}

int square(int i)
{
	return i*i;
}

int add(int i, int j)
{
	return i+j;
}

int main(int argc, char* argv[])
{
	int array[5];
	int i;
	for(i=0; i<5; i++)
	{
		array[i]=i;
	}

	mapFunction mapFuncPointer = (mapFunction)&square;
	reduceFunction reduceFuncPointer = (reduceFunction)&add;
	
	map(mapFuncPointer, array, 5);
	int result = reduce(reduceFuncPointer, array, 5);

	printf("The result is %d\n", result);
	return 0;
}
分享到:
评论

相关推荐

    map and reduceC语言实现

    在C语言中实现MapReduce涉及到了指针、函数指针以及数组的操作。接下来,我们将通过一个具体的例子来详细解释如何在C语言中实现这些功能。 #### 代码解析 1. **函数指针定义**: ```c typedef int(*mapFunction)...

    MapReduce分布式计算平台编程示例

    与C语言示例类似,这一部分介绍了如何使用Shell脚本来实现MapReduce程序。 - **3.3.1 计算任务**:同样的单词计数任务。 - **3.3.2 map实现**:使用grep命令来提取单词,awk命令来进行计数。 - **3.3.3 reduce实现*...

    大数据技术2015最新面试题

    MapReduce则是并行处理大数据的计算模型,将大任务分解为小任务并行执行,适合批处理场景。 Spark是另一种分布式计算框架,它在内存计算方面表现出色,相比Hadoop MapReduce具有更高的计算速度。Spark支持多种计算...

    百度面试一二三面.pdf

    1. **字符串拷贝函数 `strcpy`**:这是一个C语言中的函数,用于将一个字符串复制到另一个字符串中。其功能是从源字符串`src`复制内容到目标字符串`dest`,需要注意防止缓冲区溢出。 2. **堆排序算法**:堆排序是一种...

    大厂面试系列二.pdf

    在讨论gets函数在字符数组输入时越界导致程序崩溃的问题时,涉及到对C语言标准库函数的使用和缓冲区溢出的安全性问题。 C++中引用和指针的区别在于,引用是一个变量的别名,而指针是一个变量,存储的是另一个变量的...

    PCD

    C语言以其高效、灵活和接近机器语言的特点,常被用来编写并行和分布式程序的基础库,比如MPI(Message Passing Interface)库就是用C语言实现的,用于实现分布式内存并行计算。 在提供的文件列表中,"PCD-master...

    数据库CouchDB入门到精通视频课程下载整理.zip

    2. MapReduce查询:CouchDB使用MapReduce函数进行数据聚合和索引,这使得复杂查询成为可能,同时也支持视图的创建。 3. 多版本并发控制:CouchDB采用MVCC(多版本并发控制)机制,允许多个用户同时修改同一文档,...

    Think In Go.pdf

    Go语言还被用于开发微服务架构,这种架构可以将单一应用程序划分成一组小服务,每个服务运行在其独立的进程中,并且通常围绕业务能力组织,可以使用不同的编程语言和不同的数据存储技术。微服务与Go语言的并发特性和...

    Lecture4_Hadoop

    它提供高吞吐量访问应用程序数据的能力,非常适合大规模数据集的应用场景。 - **单个命名空间**:整个集群使用单一的命名空间来管理所有文件。 - **单个命名节点**:整个HDFS由一个命名节点统一管理,负责维护文件...

    hadoop-2.6.0-cdh5.14.2.tar.gz

    通过MapReduce编程模型,开发者可以编写分布式程序来并行处理数据。Hadoop生态系统还包括Hive(SQL-like查询工具)、Pig(数据流处理平台)、Spark(快速通用的大数据处理引擎)等,它们与Hadoop紧密配合,为大数据...

    知识学习地图

    8. **其他技能图谱**:iOS开发是针对苹果设备的应用程序开发,使用Swift或Objective-C语言。容器技术如Docker简化了应用程序的打包和部署,Kubernetes则是管理和编排容器集群的利器。 综上所述,"知识学习地图"提供...

    README.txt

    1. **Hadoop MapReduce**:Avro可以作为MapReduce任务的数据输入输出格式,通过AvroInputFormat和AvroOutputFormat类来实现。 2. **Hive**:Avro是Hive支持的存储格式之一,可以在创建表时指定Avro作为存储格式。 3....

    2011百度笔试题

    **数据处理**:利用MapReduce框架对数据进行处理和分析。 3. **查询服务**: - 使用倒排索引来提高查询效率。 - 对于特定时间范围的查询,可以预先计算并存储这些结果,以便快速检索。 ### DBA笔试知识点解析 ...

Global site tag (gtag.js) - Google Analytics