C 언어 빅 데이터 처리 실현
1. 소개
본 고 는 hash 방법 을 사용 하여 하나의 빅 데이터 파일 을 여러 파일 로 분산 시 켜 처리 함으로써 파일 의 IO 작업 을 낮 추고 프로그램의 효율 을 높 였 다.
2. 빅 데이터 처리 의 실현
2.1 헤더 파일 과 매크로
#include
#include
#include
#define MIX_NUM 100000//
#define ITEM_NUM 10000//
2.2 숫자 쌍 의 구조 체 만 들 기
//
typedef struct Pair
{
int num;//
int times;//
}Pair;
2.3 랜 덤 으로 MIX 생 성NUM 개수
기 존의 빅 데이터 가 없 으 면 우 리 는 프로그램 에서 랜 덤 으로 빅 데 이 터 를 생 성하 여 아 날로 그 빅 데 이 터 를 처리 할 수 있다.
// MIX_NUM
void CreatFile_BigData(const char* path)
{
FILE* fw = fopen(path,"wb");//
assert(fw != nullptr);
int tmp;
for (int i = 0;i < MIX_NUM;i++)
{
tmp = rand();
fwrite(&tmp, sizeof(int), 1, fw);
}
fclose(fw);
}
2.4 hash 파일 에서 가장 많이 나타 난 숫자 통계
// hash , ITEM_NUM
Pair HashFile(const char* path)
{
int* arr = (int*)calloc(ITEM_NUM, sizeof(int));
FILE* fr = fopen(path, "rb");
assert(fr != nullptr);
int tmp;
//
while (fread(&tmp, sizeof(int), 1, fr) > 0)
{
arr[tmp / 4]++;
}
//
Pair pa = {
0 };
for (int i = 0;i < ITEM_NUM;i++)
{
if (pa.times < arr[i])
{
pa.num = i * 4 + tmp % 4;
pa.times = arr[i];
}
}
fclose(fr);
free(arr);
return pa;
}
2.5 통계 빅 데이터 중 가장 많이 나 온 숫자
// , ITEM_NUM
Pair Maxtimes(const char* path)
{
int* arr = (int*)calloc(ITEM_NUM, sizeof(int));
FILE* fr = fopen(path, "rb");
int tmp;
char patharr[4][20];
for (int i = 0;i < 4;i++)
{
sprintf(patharr[i], "%d.txt", i);
}
FILE* fw[4];
for (int i = 0;i < 4;i++)
{
fw[i] = fopen(patharr[i], "wb");
}
// hash , ( IO)
while (fread(&tmp, sizeof(int), 1, fr) > 0)
{
fwrite(&tmp, sizeof(int), 1, fw[tmp % 4]);
}
for (int i = 0;i < 4;i++)
{
fclose(fw[i]);
}
Pair paArr[4];
for (int i = 0;i < 4;i++)
{
paArr[i] = HashFile(patharr[i]);
}
int index = 0;//
for (int i = 0;i < 4;i++)
{
if (paArr[index].times < paArr[i].times)
{
index = i;
}
}
return paArr[index];
}
2.6 실현
int main()
{
const char* path = "BigData.txt";
CreatFile_BigData(path);
Pair pa = Maxtimes(path);
printf(" =%d, =%d", pa.num, pa.times);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.