■ 5. 타조
■ Tajo 설치 방법
■/media/sf_Share 받은파일 저장하고
root 에서 oracle 로 복사시키고
오라클에 들어가서 권한 바꾸고 oracle:oinstall
거기서 압축해제
압축 해제
tar -xvzf tajo-0.11.1.tar.gz
■ tajo 디렉토리가 생겼는지 확인한다.
$ ls -ld tajo*
tajo 홈디렉토리의 이름을 tajo 로 변경한다.
$ mv tajo-0.11.1-desktop-r1 tajo
아래와 같이 따란↓
drwxr-xr-x 10 oracle oinstall 4096 Mar 2 2016 tajo
cd tajo
ls -l
(그럼 tajo 또 있음)
cd tajo
ls -ld bin
(그렇게 bin 있는 걸 확인)
[orcl:tajo]$ sh bin/configure.sh
Enter JAVA_HOME [default: /u01/app/java/jdk1.7.0_60]
그냥엔터치고
Would you like advanced configure? [y/N]
n
중복되서 글자작게 함
작업을 쉽게 하기 위해서 리눅스 심볼릭 링크 이용
ln -s tajo-0.11.1-desktop-r1 tajo
심볼릭 링크 지우는 법
rm -rf [심볼릭 링크명]
cd tajo
한번더 tajo를 들어가 줘야 합니다
압축해제 후 Tajo 셋팅 부분
자바 path는 자동으로 잡아줍니다.
[orcl:tajo]$ sh bin/configure.sh
Enter JAVA_HOME [default: /u01/app/java/jdk1.7.0_60]
추가적으로 옵션을 주기위한 부분이기 때문에 N으로 설정합니다
Would you like advanced configure? [y/N] N
타조 실행 명령어
[orcl:tajo]$ sh bin/startup.sh
starting master, logging to /home/oracle/tajo/tajo/bin/../logs/tajo-oracle-master-edydr1p0.us.oracle.com.out
Tajo master started
starting worker, logging to /home/oracle/tajo/tajo/bin/../logs/tajo-oracle-worker-edydr1p0.us.oracle.com.out
Tajo worker started
Tajo master web UI: http://edydr1p0.us.oracle.com:xxxxx
Tajo Client Service: edydr1p0.us.oracle.com:xxxxxx
#타조 실행 중단 명령어
#[orcl:tajo]$ sh bin/stop-tajo.sh
타조 쉘 작동 확인
[orcl:tajo]$ sh bin/tsql
TSQL은 HDFS와 같은 실행기능을 제공하며, \dfs 옵션으로 HDFS 명령어를 실행할 수 있습니다.
타조 실행 화면
welcome to
_____ ___ _____ ___
/_ _/ _ |/_ _/ /
/ // /_| |_/ // / /
/_//_/ /_/___/ \__/ 0.11.1-p1
Try \? for help.
orcl 이라는 데이터베이스를 생성한 후 접속을 변경합니다.
default> create database orcl;
OK
default> \c orcl;
You are now connected to database "orcl" as user "oracle".
emp table 생성 방법
CREATE EXTERNAL TABLE emp ( #차이점 체크
empno INT ,
ename text ,
job TEXT ,
mgrno INT,
hiredate text,
sal INT,
comm INT,
deptno int #대소문자 상관없음
) USING CSV WITH ('text.delimiter'=',') LOCATION 'file:///home/oracle/emp2.csv';
#바로 오라클에서 불러옴. 하둡에 -put 시킬 필요 없음
생성후
emp 테이블의 메타 데이터 조회하는 방법
(테이블 및 함수의 메타 데이터는 \d 옵션으로 조회할 수 있습니다)
emp> \d emp;
table name: emp.emp
table uri: file:///home/oracle/emp.csv
store type: TEXT
number of rows: unknown
volume: 721 B
Options:
'text.delimiter'=','
schema:
empno INT4
ename TEXT
job TEXT
mgrno INT4
hiredate TEXT
sal INT4
comm INT4
deptno INT4
명령어는 SQL과 유사
emp> select * from emp;
empno, ename, job, mgrno, hiredate, sal, comm, deptno
-------------------------------
, ename, job, , hiredate, , ,
7369, SMITH, CLERK, 7902, 1980-12-17, 800, , 20
7499, ALLEN, SALESMAN, 7698, 1981-02-20, 1600, 300, 30
7521, WARD, SALESMAN, 7698, 1981-02-22, 1250, 500, 30
7566, JONES, MANAGER, 7839, 1981-04-02, 2975, , 20
7654, MARTIN, SALESMAN, 7698, 1981-09-28, 1250, 1400, 30
7698, BLAKE, MANAGER, 7839, 1981-05-01, 2850, , 30
7782, CLARK, MANAGER, 7839, 1981-06-09, 2450, , 10
7788, SCOTT, ANALYST, 7566, 1987-04-19, 3000, , 20
7839, KING, PRESIDENT, , 1981-11-17, 5000, , 10
7844, TURNER, SALESMAN, 7698, 1981-09-08, 1500, 0, 30
7876, ADAMS, CLERK, 7788, 1987-05-23, 1100, , 20
7900, JAMES, CLERK, 7698, 1981-12-03, 950, , 30
7902, FORD, ANALYST, 7566, 1981-12-03, 3000, , 20
7934, MILLER, CLERK, 7782, 1982-01-23, 1300, , 10
9292, JACK, CLERK, 7782, 1982-01-23, 3200, , 70
(16 rows, 0.424 sec, 0 B selected)
이상 타조 비행 성공~~~~
*************tajo 접속할 때
$ cd tajo
$cd tajo
$[orcl:tajo]$ sh bin/startup.sh
[orcl:tajo]$ sh bin/tsql
default> \c orcl;
문제40. 월급이 3000 이상인 사원들의 이름, 월급을 출력하시오
orcl> select ename, sal from emp where sal>=3000;
Progress: 0%, response time: 5.112 sec
Progress: 0%, response time: 5.113 sec
Progress: 0%, response time: 5.517 sec
Progress: 100%, response time: 5.733 sec
ename, sal
-------------------------------
KING, 5000
FORD, 3000
SCOTT, 3000
hive 보다 빠르다 !
문제41.
월급이 1000~3000 사이인 사원들의 이름, 월급을 출력하시오
orcl> select ename, sal
> from emp
> where sal between 1000 and 3000;
Progress: 100%, response time: 0.134 sec
ename, sal
-------------------------------
BLAKE, 2850
CLARK, 2450
JONES, 2975
MARTIN, 1250
ALLEN, 1600
TURNER, 1500
WARD, 1250
FORD, 3000
SCOTT, 3000
ADAMS, 1100
MILLER, 1300
문제42. 이름의 첫글자가 S 로 시작하는 사원들의 이름,월급을 출력하시오
orcl> select ename, sal
> from emp
> where ename like 'S%';
Progress: 100%, response time: 0.178 sec
ename, sal
-------------------------------
SMITH, 800
SCOTT, 3000
orcl> select ename,sal
> from emp
> where substr(ename,1,1)='S';
Progress: 100%, response time: 0.285 sec
ename, sal
-------------------------------
SMITH, 800
SCOTT, 3000
문제43. 커미션이 null 인 사원들의 이름.커미션을 출력하시오
orcl> select ename, comm
from emp
where comm is null;
문제44. 직업, 직업별 토탈월급을 출력하시오!
orcl> select job, sum(sal)
> from emp
> group by job;
Progress: 100%, response time: 0.356 sec
job, ?sum
-------------------------------
MANAGER, 8275
CLERK, 4150
PRESIDENT, 5000
SALESMAN, 5600
ANALYST, 6000
문제45. having 절이 지원되나 확인하시오.
직업, 직업별 토탈월급을 출력하는데 직업별 토탈월급이 4000 이상인 것만 출력하시오!
orcl> select job, sum(sal) sumsal
> from emp
> group by job
> having sumsal>=4000;
Progress: 100%, response time: 0.797 sec
job, sumsal
-------------------------------
MANAGER, 8275
CLERK, 4150
PRESIDENT, 5000
SALESMAN, 5600
ANALYST, 6000
문제46. select 문의 6가지 절이 다 지원되는지 확인하시오
직업, 직업별 토탈월급을 출력하는데 직업이 SALESMAN 인 사원들은 제외하고 출력하고
직업별 토탈월급이 4000이상인 것만 출력하고
직업별 토탈월급이 높은것부터 출력하시오
orcl> select job, sum(sal)
> from emp
> where job!='SALESMAN'
> group by job
> having sum(sal) >= 4000
> order by sum(sal) desc;
Progress: 100%, response time: 0.693 sec
job, ?sum
-------------------------------
MANAGER, 8275
ANALYST, 6000
PRESIDENT, 5000
CLERK, 4150
문제47. 부서번호, 부서번호별 토탈월급을 출력하는데 가로로 출력하시오
SQL> select sum(decode(deptno,10,sal)) "10"
:
:
orcl> select
> sum(case when deptno=10 then sal end) "dept10",
> sum(case when deptno=20 then sal end) "dept20",
> sum(case when deptno=30 then sal end) "dept30"
> from emp;
Progress: 100%, response time: 0.128 sec
dept10, dept20, dept30
-------------------------------
8750, 10875, 9400
문제48. dept2.csv 로 dept 테이블을 생성하시오
CREATE EXTERNAL TABLE dept (
deptno int ,
dname text,
loc text) USING CSV WITH ('text.delimiter'=',') LOCATION 'file:///home/oracle/dept2.csv';
orcl> select * from dept;
deptno, dname, loc
-------------------------------
10, ACCOUNTING, NEW YORK
20, RESEARCH, DALLAS
30, SALES, CHICAGO
40, OPERATIONS, BOSTON
(4 rows, 0.019 sec, 0 B selected)
문제49. 이름,. 부서위치를 출력하시오
***1999ANSI 조인 안써도 가능하다.
orcl> select e.ename, d.loc
> from emp e, dept d
> where e.deptno=d.deptno;
Progress: 100%, response time: 0.105 sec
ename, loc
-------------------------------
KING, NEW YORK
BLAKE, CHICAGO
CLARK, NEW YORK
JONES, DALLAS
MARTIN, CHICAGO
ALLEN, CHICAGO
TURNER, CHICAGO
JAMES, CHICAGO
WARD, CHICAGO
FORD, DALLAS
SMITH, DALLAS
SCOTT, DALLAS
ADAMS, DALLAS
MILLER, NEW YORK
문제50. 이름,부서위치를 출력하는데 right outer join 을 써서 출력하시오
orcl> select ename, loc
from emp e right outer join dept d
on e.deptno=d.deptno;
KING, NEW YORK
CLARK, NEW YORK
MILLER, NEW YORK
JONES, DALLAS
FORD, DALLAS
SMITH, DALLAS
SCOTT, DALLAS
ADAMS, DALLAS
BLAKE, CHICAGO
MARTIN, CHICAGO
ALLEN, CHICAGO
TURNER, CHICAGO
JAMES, CHICAGO
WARD, CHICAGO
, BOSTON
문제51. 타조에서 full outer join 이 되는지도 확인해보시오
orcl> select ename, loc
from emp e full outer join dept d
on (e.deptno=d.deptno);
KING, NEW YORK
BLAKE, CHICAGO
CLARK, NEW YORK
JONES, DALLAS
MARTIN, CHICAGO
ALLEN, CHICAGO
TURNER, CHICAGO
JAMES, CHICAGO
WARD, CHICAGO
FORD, DALLAS
SMITH, DALLAS
SCOTT, DALLAS
ADAMS, DALLAS
MILLER, NEW YORK
, BOSTON
문제52. 타조에서는 rollup 이 지원되지는 않지만 union all 은 지원되므로 아래의 SQL 을
union all 로 구현하시오!
SQL> select deptno, sum(sal)
frome emp
group by rollup(deptno);
orcl> select deptno, sum(sal)
from emp
group by deptno
union all
select 0 as deptno ,sum(sal) #null 로 하니까 에러뜸.
from emp;
0, 29025
20, 10875
30, 9400
10, 8750
문제53. 이름,월급,순위를 출력하는데 순위를 월급이 높은 사원순으로
순위를 부여하시오
select ename, sal, dense_rank()over(order by sal desc) rn
from emp;
**dense 없음
문제54. 사원번호, 이름,월급과 월급의 누적치를 출력하시오
orcl> select empno, ename, sal,
sum(sal)over(order by empno asc rows between unbounded preceding and current row
) sumsal
from emp;
※ 하둡에서 타조에게 누적치 함수 지원안 함
sum(sal)over(order by empno asc) 해도 누적치 안나옴
문제55.
lead 와 lag 데이터 분석함수가 지원이 되는지 확인하시오 !
orcl> select ename, sal,
lead(sal,1)over(order by sal asc) lead_sal,
lag(sal,1) over(order by sal asc) lag_sal
from emp;
ename, sal, lead_sal, lag_sal
-------------------------------
SMITH, 800, 950,
JAMES, 950, 1100, 800
ADAMS, 1100, 1250, 950
MARTIN, 1250, 1250, 1100
WARD, 1250, 1300, 1250
MILLER, 1300, 1500, 1250
TURNER, 1500, 1600, 1300
ALLEN, 1600, 2450, 1500
CLARK, 2450, 2850, 1600
BLAKE, 2850, 2975, 2450
JONES, 2975, 3000, 2850
FORD, 3000, 3000, 2975
SCOTT, 3000, 5000, 3000
KING, 5000, , 3000
문제56. 우리반 테이블을 올리시오
$su -
#cd /media/sf_Share
# cp emp8.csv /home/oracle/
# chown -R oracle:oinstall emp8.csv
#su - oracle
$ls emp8.csv
CREATE EXTERNAL TABLE emp8 (
empno int ,
ename text,
age int,
birth text,
major text,
email text,
telecom text,
address text
) USING CSV WITH ('text.delimiter'=',') LOCATION 'file:///home/oracle/emp8.csv';
타조한글 깨짐
컨트롤 씨 (비정상 종료)
[orcl:tajo]$ cd conf
[orcl:conf]$ pwd
/home/oracle/tajo/tajo/conf
[orcl:conf]$ vi tajo-env.sh
맨아래에 아래 2줄 저장
LANG="ko_KR.UTF-8"
export LANG="ko_KR.UTF-8"
*****처음부터
터미널 창 켜서 UTF-8 로 설정해서 파일 Share에서 가져와야함!!!!
문제57. 전공이 심리학과인 학생들의 이름,나이,전공을 출력하시오
orcl> select ename, age, major
> from emp8
> where major='심리학과';
Progress: 100%, response time: 1.986 sec
ename, age, major
문제58. 서울에 살지 않는 학생들의 이름,나이,주소를 출력하시오
**not in 으로 하면 정확한 답 안나옴!!
select ename, age, address
from emp8
where address not like '%서울%';
문제59. 리눅스 자동화 쉘에 아래의 타조 실행을 추가하시오!
문제60. 하이브도 다 추가하시오
$ vi .bash_profile
export TAJO_HOME=/home/oracle/tajo/tajo
export PATH=$TAJO_HOME/bin:$PATH
[orcl:~]$ . .bash_profile <<<---이거 실행시켜야 함!!!
[orcl:~]$ sh total.sh <-실행 !!
$ vi total.sh
echo " "
echo "1. 두파일의 차이를 확인하려면 1번을
2. 특정 파일을 검색하려면 2번을
3. 찾고자 하는 단어의 개수를 검색하려면 3번을
4. 오라클 데이터를 csv 로 생성하려면 4번을
5. emp.csv 에서 이름과 월급을 검색하려면 5번을
6. 타조로 접속하려면 6번을
7. 하이브로 접속하려면 7번을"
echo -n " 번호를 입력하세요 ~ "
read choice
case $choice in
1)
sh /home/oracle/diff.sh;;
2)
sh /home/oracle/find_file.sh;;
3)
sh /home/oracle/find_word.sh;;
4)
sh /home/oracle/make_csv2.sh;;
5)
python /home/oracle/find_ename.py;;
6)
tsql
7)
hive
esac
문제61. 타조를 시작시키는 명령어와 타조를 중지시키는 명령어를
자동화 스크립트에 추가하시오!
타조 시작시키는 명령어: sh bin/startup.sh
타조 중지시키는 명령어: sh bin/stop-tajo.sh
근데
.bash_profile 에 넣어놔서 위치 상관없이 startup.sh 시켜도 된다.
↓
타조 시작시키는 명령어: startup.sh
타조 중지시키는 명령어: stop-tajo.sh
다른창 쓰거나, 껐다키면 배쉬 한번 돌려줘야 함
$ . .bash_profile
tsql 치면 들어가짐
'hadoop' 카테고리의 다른 글
7. mongo db 설치, 설명 (0) | 2019.01.11 |
---|---|
6. PIG설치, 설명 (0) | 2019.01.11 |
4. HIVE (0) | 2019.01.11 |
3. 하둡 분산 파일 (0) | 2019.01.11 |
2. 하둡설치, hive 설치 (0) | 2019.01.11 |