# 오라클을 안 쓰고 하둡을 이용하는 이유
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 |