大数据处理---C++

面对一个无法一次性加载到内存的大文件,如1TB大小,包含单个数字的每一行,本文探讨如何使用C++有效地统计文件中数字1的数量。通过高效的数据处理方法,即使在有限的内存条件下,也能实现大数据的分析。
摘要由CSDN通过智能技术生成

一个大文件,肯定是内存无法全部读取的,比如1TB,里边很多字段,假设是这样的:

1

1

1

这样一行一个数字,简单点,不统计每个数字的频率了,仅仅统计有多少个1,如何做呢?

FILE * p = fopen("test.dat","r");
__int64 len=0;
char a[2]={0};
for(int i = 0 ;; i ++)
{
	fread(a,2,1,p);
	if(a[0]!='1')
		break;
	len =i*1024;
}
printf("%s  %d\n",a,len);
fclose(p);
p = NULL;
之前以为fopen是将文件全部加载进内存后再操作,实践之后发现不是这样,它可以一点点向后读取,但是要是太大,直接就seek到文件结尾,还是会异常、崩溃,这时候使用虚拟内存映射来处理:

#include <stdio.h>
#include <Windows.h>
void createBigFile(int NumberGB=0)
{
	FILE * p = fopen("d:\\test.dat","w+");
	for(int i = 0 ; i < NumberGB ; i ++)
	{
		fwrite("1\n",2,1,p);
	}
	fclose(p);
	p = NULL;
}
voi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值