본문 바로가기

PBL 빅데이터/빅데이터 플랫폼

[수업] 빅데이터 플랫폼5

1) Hive

1-1) Hive소개

- Hive는 Hadoop의 HDFS에 저장되어 있는 파일을 SQL Query로 처리하기 위한 환경을 제공하기 위한 오픈소스이다.

현업에서는 보통 Hive를 많이 사용한다.

- 검색, Join을 하기위해서 제공된 오프소스이다.

- 근본적으로 Hive로 Data Warehouse(보고서)를 구죽하기 위한 목적으로 만들어졌다.

- SQL Query 형식의 질의언어를 이용한 데이터 처리 지원한다.(집계:group by)

- MapReduce 방식에  비해서 편리하다는 장점이 있지만 데이터가 MySQL과는 다르게 여러군데에 분산되어 있다보니 처리속도가 느리다.

1-2) 실습환경 만들기

1-2-1) data폴더가 들어있는지 확인하기

강사님이 만들어두신 data폴더가 실습을 위해 현재 server02에 위치해 있는지 확인해야한다.

data폴더 확인

데이터 폴더안에 파일들이 들어가있음을 확인할 수 있다.

 

1-2-2) 서비스 재시작: HDFS, Hive, Yam, Zookeeper 재시작, 나머지 서비스 중지
                     

재시작

어떤 오류가 생길지 모르니 재시작해준다. 용량이 부족하므로 사용하지않는 나머지들은 정지시킨다.

 

1-2-3)  내 컴퓨터의 data 폴더의 names.csv를 HDFS에 업로드

names.csv를 HDFS에 업로드

csv 파일을 이동해주어야한다. 

- 먼저 디렉토리를 data로 이동해주어야한다.

- Hadoop에 /user/hdfs/names 폴더를 생성해주는데 -p는 중간에 없는 폴더라고 생성해준다.

- names.csv를 Hadoop의 /user/hdfs/names 폴더에 업로드해준다. 현재는 내컴퓨터에 있으니 server02로 옮긴다.

- -ls를 이용해서 디렉토리를 조회한다.

 

다시 한번 데이터 구조에 대해서 적어보자면

데이터 구조

이런식으로 구성되어있다고 보면 된다.

 

1-2-4) Hive 실행

Hive실행

hive를 입력해서 Hive를 실행한다.

 

1-2-5) 테이블 생성

테이블 생성

테이블을 생성해주는데 위에 적힌 CREATE EXTERNAL TABLE IF NOT EXISTS Names_text의 의미는 Names_text파일이 존재하지 않을때, HDFS, NO SQL의 데이터를 분석할 Table(아직 분석은 안됨)을 생성한다는 뜻이다.  MySQL처럼 대소문자를 구별하지않는다. MySQL과 같이 대소문자를 구분하지않는다.

 

1-2-6) 테이블 조회

테이블 조회

Select를 통해서 저장된 데이터를 조회하면 데이터가 현재 들어있는 것을 확인할 수 있다.

 

2) Hive를 이용한 상품평 분석

저번에도 그랬듯이 이번에도 server01.hadoop.com:7180 접속접속해서 HDFS, Hive, Yam, Zookeeper재시작, 나머지 서비스는 정지하기

2-1) HDFS에 csv파일 업로드할 폴더 생성

HDFS에 csv파일 업로드할 폴더 생성

장부를 저장할 /user/cloudera 폴더를 생성한다. Name Node안 /user/cloudera/에 만든다.

2-2) 평점이 낮은 물건 조회하고 평점에서 가장 많이 나오는 단어 조회

2-2-1) 분석할 파일을 HDFS 업로드할 폴더 생성

HDFS 업로드 폴더 생성

-mkdir을 통해서 장부를 저장할 폴더를 만든다.

 

2-2-2) 파일을 업로드하고 조회하기

업로드 & 조회

내 컴퓨터의 위치한 ratings_2013.txt를 HDFS의 경로에 옮겨준다. 옮긴 후 -ls를 통해서 저장된 리스트를 조회한다.

 

2-2-3) HDFS에서 조회하기

HDFS에서 조회

옮겨줬으니 재대로 옮겨졌는지를 HDFS에서 확인한다.

조회

2-2-4) Hive 실행

Hive 실행

2-2-5) Hive에서 테이블 생성

Hive에서 테이블 생성

ratings_2013.txt에서 

1) 평점이 제일 낮은 것

2) comment에서 제일 많이 사용한 단어를 검색하기 위해서 테이블을 만든다.

 

2-2-6) 테이블을 조회

테이블 조회

테이블을 생성했으니 테이블을 조회해야한다. limit 10은 10개를 조회한다는 의미로 들어갔는지 빠르게 확인하기위해서 사용한다.

 

2-2-7) 물건 번호로 그룹을 묶어서 제품을 조회하기

MySQL에서 사용하던 명령어들을 다 사용할 수 있으며, 특수한 MySQL의 기능을 제외하고는 사용가능하다.

그룹묶기
그룹묶어서 조회

2-2-8) 게시물의 개수가 50건 이상인 조건으로 조회

50건 이상 조회

함수를 조건할 때에는 where이 아니라 having을 사용한다.

 

조회 결과

2-2-9) 평균평점을 별칭 부여해주기 

- select 명령 실행시 테이블의 컬럼명이 조회되도록 설정

set hive.cli.print.header=true;

 

평균평점을 별칭 부여
조회 결과

2-2-10) 게시물의 평점 평균이 낮은 순으로 정렬

평점 평균이 낮은 순으로 정렬

order by를 사용해서 정렬해준다.

조회 결과

 

2-2-11) 평점이 가장 낮은 1줄을 조회

평점이 가장 낮은 1줄을 조회

limit를 통해서 1개를 지정해주고 조회한다.

조회 결과

 

2-2-12) 평점이 가장 낮은 prod_id = 1274673의 메세지를 조회

메세지 조회

select 다음에 message로 변경해서 message를 조회한다.

조회 결과

653줄의 상품평들이 조회되는데 많아서 보기가 어렵다.

 

2-2-13) 메세지를 소문자로 변환해서 조회

소문자 변경

lower을 통해서 소문자로 변경할 수 있다.

조회 결과

 

2-2-14) 메세지를 단어 단위로 분리

단어 단위 분리

sentence를 사용해서 단어 단위로 분리해서 리스트에 넣을 수 있다.

조회 결과

 

2-2-15) 연속된 3개의 단어 중에서 가장 많이 나온 단어 5개 조회

단어 조회

ngrams을 사용해서 조회할 수 있는데 3은 연속된 3개의 단어를 5는 가장 많이 나온 단어 5개를 의미한다.

조회 결과

 

2-2-16) ten times more이라는 단어를 포함하는 메세지 조회

단어를 포함하는 메세지 조회

평점이 제일 낮은 물건 메세지안에서 ten times more이라는 단어를 포함하는 메세지를 조회한다.

조회 결과

 

2-2-17) 중복을 제거하고 조회하기

중복 제거

distinct을 사용해서 중복을 제거한다.

조회 결과

빨간색이 10배 더 비싸다는 상품평이 있는데 이에 대해서 빨간색에 대한 조회가 필요하다.

 

2-2-18) red가 들어간 메세지를 조회

red 메세지 조회
조회 결과

빨간색 제품에 대해서 안좋은 메세지들을 확인할 수 있다. 문제가 있음을 확인하였으므로, 빨간색 제품에 대해서 정보 조회가 필요하다.

 

2-3) 평점이 낮은 물건의 가격 정보 조회

2-3-1) 하이브를 종료하고 하둡에 제품 정보 로드

물건의 가격 정보 업로드

 

2-3-2) 테이블 생성

테이블생성은 다시 Hive에 들어가서 해줘야한다.

테이블 생성

 

2-3-3) 테이블 조회

테이블 조회

테이블을 위에 했던 것과 같이 limit를 사용하여 조회한다.

 

2-3-4) 127463의 정보 조회

127463의 정보 조회
조회 결과

 

2-3-5) Orion사의 다른 제품들도 조회하기

Orion사 조회

Orion사의 다른 제품들에게 문제가 있는지 확인해보기 위해서 조회해본다.

조회 결과

색만 다른 같은 물품들이 4299 가격인 것을 알 수 있다. 색만 다른거라서 파일에서 입력할 때, 실수로 9를 하나 더 입력한 것이라는 것을 알 수 있다.
이를 통해서 평점이 낮은 물건과 왜 평점이 낮은지에 대해서 알 수 있었다.