Data Engineering/Hive

[Linux/Hive] 공공데이터 포털에서 데이터셋을 다운로드 받아 Hive에 적재해보자

seoraroong 2024. 8. 22. 00:00

https://www.data.go.kr/

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

윈도우에서 데이터셋 다운로드 받고 리눅스 root에 전송

→ 이 과정에서 csv 파일을 리눅스에서 열었을 때 한글이 깨져보이는 현상이 발생했다.

 

- google colab에서 csv 파일을 전처리해서 문제를 해결한다.

import pandas as pd
df = pd.read_csv("아파트분양.csv")
df = pd.read_csv("아파트분양.csv", encoding='utf-8', header = False)

# 인덱스 제거하고 헤더 정보 없이 내용만으로 csv 생성
df = pd.read_csv("아파트분양.csv.csv", header=None)
# 헤더 정보가 없기 때문에 기본 동장이 첫 로우를 헤더로 인식하는 것을 방지
df.to_csv('아파트분양.csv', index = False)

 

- 전처리 한 csv 파일을 명령 프롬프트에서 리눅스 환경으로 다시 전송하기

 

 

데이터셋을 Hive에 적재하기

- 데이터셋을 저장할 디렉토리 생성하기

   -> 원하는 디렉토리 하위에 생성해준다. 어느 디렉토리에 만들어도 상관은 없다.

hadoop fs -mkdir -p user/root/hadoop_edu/aptprice

 

- 생성한 디렉토리에 데이터셋 넣기

hadoop fs -put 아파트분양.csv user/root/hadoop_edu/aptprice

 

- Hive를 실행해서 데이터셋을 가져올 테이블 생성하기

CREATE DATABASES IF NOT EXISTS hadoop_edu;
CREATE EXTERNAL TABLE hadoop_edu.aptprice
(
  region_name STRING,
  size_category STRING,
  year INT,
  month INT,
  price_per_square_meter STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS textfile
LOCATION '/user/root/hadoop_edu/aptprice';

 

- 생성한 테이블에 데이터셋 load하기

LOAD DATA INPATH '/user/root/hadoop_edu/aptprice' INTO TABLE hadoop_edu.aptprice;

LOAD DATA INPATH데이터셋을 저장할 디렉토리의 경로INTO TABLE 생성한 테이블 이름 ;

 

- 테이블 조회해보기

→ 데이터셋을 전처리할 때 Header를 제거하는 과정을 거치지 않았음

→ 문제 확인 후 colab에서 Header를 제거 후 다시 데이터를 로드함