본문 바로가기

나 취준생/리눅스

hive

320x100

# 오라클을 안 쓰고 하둡을 이용하는 이유

 

1. 하둡 is free

2. 분산 파일 시스템의 장점을 이용할 수 있기 때문

(여러 컴퓨터를 하나로 묶어 컴퓨터의 성능 up)

 

# hive에 csv 파일에 있는 데이터 올리는 법

 

윈도우 ---> 리눅스 ---> 하둡 파일 시스템

 

1. 서버와 연결해둔 공유 파일에 emp2.csv 파일을 넣는다.

 

1.5 - 파일이 만약 쉼표로 구분되어 있지 않다면 데이터 전처리를 해줘야 한다.

(난 아직 쉼표로 구분된 데이터밖에 넣을줄 모르기 때문에)

* 리눅스 명령어로 데이터 전처리를 하는 방법은 다음 게시글에서!

 

2. 하둡 파일 시스템에 올리기

cd

cp /media/sf_data/emp2.csv /home/scott/ # 공유 폴더에서 복사해오기

hadoop fs -put emp2.csv emp2.csv # 하둡 파일 시스템에 올릴게

hadoop fs -ls emp2.csv # 확인

 

3. hive에 접속

cd hive-0.12.0/bin/
./hive

 

4. csv 데이터와 일치하는 테이블 생성

예시:

create table emp          
(empno int,  
ename string,
job string,
mgr int,
hiredate string,
sal int,
comm int,
deptno int) # csv 데이터 형태에 맞춰 컬럼 생성


STORED AS TEXTFILE ; ROW FORMAT DELIMITED # 반드시 써줘야하는 문법
FIELDS TERMINATED BY ',' # 컬럼과 컬럼은 콤마로 구분하겠다
LINES TERMINATED BY '\n' # 행과 행은 엔터로 구분하겠다
STORED AS TEXTFILE ; # 반드시 써줘야하는 문법

 

5. 방금 만든 테이블에 csv 파일을 로드

load data inpath '/user/scott/emp2.csv' # csv 파일 위치

overwrite into table emp; # 로드

 

하면 끝!

 

 # HiveQL
  
 1.  SELECT 는 되는데 update 와 delete 명령어는 지원 안함
 2.  from 절의 서브쿼리는 사용가능 
 3.  select 문 사용시 having 절은 사용 불가능
 4.  PL/SQL 의 프로시져는 hive2.0 부터 가능 

 

## 추가 오라클과 다른 점 ##

 

# hive 조인

 

예제 : emp 테이블의 사원 이름과 dept 테이블의 부서 위치를 출력하기

 

select e.ename, d.loc

 from emp e, dept d

 where e.deptno=d.deptno;

 

이렇게 오라클에서 하던대로 조인하면 오류가 뜬다.

 

select e.ename, d.loc

 from emp e join dept d

 on (e.deptno=d.deptno);

 

 

hive에서 조인하려면 오라클 조인 문법이 아닌

다음과 같은 1999 ansi 문법으로 조인해야 한다.

 

select deptno, avg(sal) as avgsal

 from emp

 group by deptno

 order by avgsal desc;

 

hive는 오라클과 달리

그룹 함수를 기준으로 정렬을 할 때는

그룹 함수에 별칭을 준 뒤

order by 절에 그 별칭을 사용해야 한다.

또는 order by 숫자도 가능하다.

 

# 날짜 함수 차이

 

          오라클                vs              하이브

to_char(hiredate,'RRRR')            year(to_date(hiredate))

to_char(hiredate,'MM')             month(to_date(hiredate))

to_char(hiredate,'DD)                day(to_date(hiredate))

 

select ename,year(to_date(hiredate))

 from emp;

 

반응형

'나 취준생 > 리눅스' 카테고리의 다른 글

spark에 테이블 올리고, SQL 수행하는 법  (0) 2021.01.12
리눅스 특정 텍스트 치환  (0) 2021.01.08
리눅스 현재 디렉토리로 복사할 때 팁  (0) 2021.01.07
하둡  (0) 2021.01.07
리눅스 IF문, For문  (0) 2021.01.06