Data/K-MOOC 데이터 엔지니어링

1주차 데이터 엔지니어링 소개

안정민 2023. 12. 26. 11:45

 

데이터 엔지니어링 : 특정 목적의 서비스를 만들기 위해 빅데이터의 파이프라인을 설계 및 구축하는 것

(데이터 취사 선택-> 수집 -> 가공 -> 저장->분석, 시각화 -> 시스템구축  의 과정을 거치게 된다)

 


 

1. 데이터 처리 과정

 

1) 데이터 수집

- 여러 데이터 소스에 따라 데이터 소스 수집 방법이 다양

-ex) API 호출, 센서 신호 읽기, 파일 읽기, 데이터 베이스 접근 

-데이터를 사용하고 있는 메타 데이터는 샵으로 시작되며, 나머지 줄은 사실관계가 탭으로 나누어져 각 줄로 제공

 

2) 데이터 가공

-데이터 저장을 위한 형태로 데이터 처리, 추상화, 파싱, 검증, 정제 등의 작업을 수행할 수 있음

-ex) 데이터 명세 (메타 데이터) 무시, 중복 데이터 제거, 누락데이터 제거, 결함데이터 제거, 토큰화

-이러한 과정은 엔지니어가 만들고자 하는 서비스에 의존

 

3) 데이터 저장

-데이터를 특정 목적의 서비스를 만들기 적절한 형태로 유지

-메모리 저장, 데이터 베이스 저장 등의 방법을 활용할 수 있음


 

2. 실세계 데이터셋 추출 및 모델링

 

1)  FileReader 클래스 -> 파일의 내용을 한 줄 읽기하여 반환하는 클래스

 

2) 데이터 파싱 : 예를 들어, 버퍼를 사용해 읽어들인 파일 내부의 문자열을 프로그래밍 언어가 이해할 수 있는 형태로 처리하는 것을 의미

 

3) 이메일을 보낸 사실 자체를 추상화 -> 자바 클래스를 활용

 

package kr.ac.sejong.kmooc.data_engineering;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class App1 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\jordi\\Downloads\\email-EuAll.txt.gz"));
		while(true) {
			
			String line = br.readLine();
			if(line==null)
				break;
			if(line.startsWith("#")) //메타데이터 필터링
				continue;

			String[] array = line.split("\t");
			System.out.println(array[0]+"->"+array[1]);
			
			int from = Integer.parseInt(array[0]);
			int to = Integer.parseInt(array[1]);
			
			System.out.println(new Email(from, to));
			
		}
		br.close();
	}

}

 

package kr.ac.sejong.kmooc.data_engineering;

public class Email {
	// 실행되지 않는 일반 클래스로 데이터 추상화, 프로시저 추상화 역할을 담당하고 있음
	//데이터 추상화
	int from;
	int to;
	
	//프로시저 추상화
	public Email(int from, int to) {
		this.from=from;
		this.to=to;
	}
	public String toString() {
		return from+" -> "+to;
	}

}