본문 바로가기

hadoop

5. TAJO설치, 설명

728x90
반응형

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 치면 들어가짐


728x90
반응형

'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