Pig 문서 원본 보기
←
Pig
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
[[Hadoop]]의 [[MapReduce]]를 사용하는 절차적 언어인 pig를 정리 합니다. * 홈페이지 : http://pig.apache.org/ :*매뉴얼 : http://pig.apache.org/docs/r0.7.0/index.html :*Pig Tools : https://cwiki.apache.org/confluence/display/PIG/PigTools * 다운로드 : http://pig.apache.org/releases.html * 라이센스 : Apache 2.0 * 플랫폼 : Java ==pig 개요== *Pig Latin : Pig에서 정의하여 사용하는 언어 *UDF : 로딩, 저장, 필터링, 그룹핑, 순서 정렬, 조인 ==CentOS에서 Pig 설치== ===사전 준비 사항=== *Hadoop 1.1.2 *Java 1.7.0_19 :*[[JDK#CentOS용 설치 가이드|CentOS용 JDK 설치 가이드]] *CentOS 6.4, 64 bits ===설치=== *설치 파일을 다운로드하여 /appl/pig 폴더에 압축을 풉니다. wget http://apache.tt.co.kr/pig/pig-0.11.1/pig-0.11.1.tar.gz tar zxvf pig-0.11.0.tar.gz *vi .bashrc export PIG_HOME=/appl/pig export PATH=$PATH:$PIG_HOME/bin #export PIG_HADOOP_VERSION=18 //--- Pig에서 사용할 Hadoop 버전 지정 #export PIG_CLASSPATH=/appl/hadoop/conf/ *Pig 관련 파일 /appl/pig/conf/pig.properties /appl/pig/bin/pig_1369150716069.log *vi /app/pig/bin/pig export HADOOP_CONF_DIR=/appl/hadoop/conf export PIG_HOME=/appl/pig export PIG_CONF_DIR=$PIG_HOME/conf *vi pig.properties #fs.default.name=hdfs://localhost/ #mapred.job.tracker=localhost:8021 *서비스 확인 startall.sh //--- Hadoop이 먼저 실행이 되어 있어야 합니다. pig -help //--- 도움말 pig ctrl_d ==Pig Latin== ===Data type=== *int, long, float, double *chararray *bytearray *turple : (~, ~) *bap : {(~), (~)} *map : [~#~] ===Pig Latin 문법=== *Sample data01 = LOAD 'hdfs://~/txt' AS (~:chararray, ~:int); //--- 데이터는 탭으로 구분 DESCRIBE data01; DUMP data01; data02 = FILTER data01 BY ~ != 9999 AND (~ == 0 OR ~ == 1); store data02 into '~/b.txt'; data03 = GROUP data02 BY year; item01 = FOREACH data03 GENERATE group, MAX(data02.~); //--- group은 year를 지칭 합니다. DUMP item01; illustrate item01; *MapReduce 갯수 지정 : parallel *Parameter 전달 : $~ pig -param ~=~ ~.pig *로드 및 저장 load 'hdfs://~' as ($var:$type, $var:$type); store dump *필터링 filter ~ by ~ parallel 30; //--- 30개의 MapReduce로 작업 실행 distinct foreach ~ generate ~, ~; MAX(~), COUNT(~) foreach ~ { ~; generate ~; } stream ~ through 'linux 명령어'; *분류 및 결합 join ~ by $0, ~ by $11; join ~ by ~ left outer, ~ by ~; cogroup ~ by $0, ~ by $11; //--- key의 값에 따른 중첩된 tuple 집합을 생성 group ~ by ~; cross ~, ~; *정렬 order ~ by $0, $1 desc; limit *병합 및 분할 union ~, ~; //--- 두개의 테이블을 하나의 테이블로 결합 split *설명 describe ~; explain ~; illustrate ~; *UDF 정의 register define *하둡 파일 시스템 cat, cd, copyFromLocal, copyToLocal, cp, fs, ls, mkdir, mv, pwd, rm, rmf *하둡 맵리듀스 kill, exec, help, run, quit, set ==UDF== *필터 UDF package com.jopenbusiness.hadoop.pig; public class ~ extends FilterFunc { public Boolean exec(Tuple tuple) throws IOException { try { //--- tuple.size() //--- Object obj = tuple.get(0); } catch(ExecException e) { throw new IOExeption(e); } } } :*register ~.jar; :*com.jopenbusiness.hadoop.pig.함수명(~) 을 호출하여 사용 :*새로운 ~ 함수명으로 호출하여 사용하기 위해서는 pig에서 다음을 실행 합니다. define ~ com.jopenbusiness.hadoop.pig.함수명(); ~ = filter ~ by 함수명(~); *평가 UDF public class ~ extends EvalFunc<String> { public String exec(Tuple input) throws IOException { try { } catch (ExecException e) { throw new IOException(e); } } public List<FuncSpec> getArgToFuncMapping() throws FrontendException { List<FuncSpec> funcList = new ArrayList<FuncSpec>(); funcList.add(new FuncSpec(this.getClass().getName(), new Schema(new Schea.FieldSchema(null, DataType.CHARARRAY)))); return funcList; } } :*pig에서 사용 ~ = foreach ~ generate 함수명(~); *로드 UDF public class ~ extends LoadFunc { public ~(String initValue) { } public InputFormat getInputFormat() { return new TextInputFormat(); } public void prepareToRead(RecordReader reader, PigSplit split) { this.reader = reader; } public Tuple getNext() throws IOException { try { } catch (InterruptedException e) { throw new ExecException(e); } } } *pig에서 사용 ~ = load '~' using 함수명(~) as (~); ==참고 문헌== *[http://julingks.tistory.com/entry/Pig-Latin-Menual Pig Latin Menual, 2011.3] *Pig 함수 :*함수의 종류 : 평가 함수, 필터 함수, 로드 함수, 저장 함수 :*http://wiki.apache.org/pig/PiggyBank [[Category:BigData]]
Pig
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보