아파치 피그
Apache Pig![]() | |
개발자 | Apache Software Foundation, Yahoo Research |
---|---|
초기 릴리즈 | 2008년 9월 11일; | 전
안정적 해제 | 0.17.0 / 2017년 6월 19일; 전 |
리포지토리 | |
운영 체제 | Microsoft Windows, OS X, Linux |
유형 | 데이터 분석 |
면허증 | 아파치 라이선스 2.0 |
웹사이트 | pig |
Apache Pig는[1] Apache Hadoop에서 실행되는 프로그램을 만들기 위한 고급 플랫폼이다.이 플랫폼의 언어는 Pig Latin이라고 불린다.[1]Pig는 MapReduce, Apache Tez 또는 Apache Spark에서 Hadoop 작업을 실행할 수 있다.[2]Pig Latin은 Java MapReduce 용어에서 관계형 데이터베이스 관리 시스템용 SQL과 유사하게 MapReduce 프로그래밍을 높은 수준으로 만드는 표기법으로 프로그래밍을 추상화한다.피그 라틴어는 사용자가 자바, 파이썬, 자바스크립트, 루비, 그루비[3] 등으로 작성한 후 해당 언어로 직접 호출할 수 있는 사용자 정의 함수(UDF)를 사용해 확장할 수 있다.
역사
Apache Pig는 원래[4] 2006년경 야후 리서치에 연구원들이 매우 큰 데이터 세트에서 MapReduce 작업을 만들고 실행하는 특별한 방법을 갖도록 개발되었다.2007년 아파치 소프트웨어 재단으로 이전했다.[5]
버전 | 원본 발매일 | 최신 버전 | 출시일자[6] | |
---|---|---|---|---|
더 되지 않음 0.1 | 2008-09-11 | 0.1.1 | 2008-12-05 | |
더 되지 않음 0.2 | 2009-04-08 | 0.2.0 | 2009-04-08 | |
더 되지 않음 0.3 | 2009-06-25 | 0.3.0 | 2009-06-25 | |
더 되지 않음 0.4 | 2009-08-29 | 0.4.0 | 2009-08-29 | |
더 되지 않음 0.5 | 2009-09-29 | 0.5.0 | 2009-09-29 | |
더 되지 않음 0.6 | 2010-03-01 | 0.6.0 | 2010-03-01 | |
더 되지 않음 0.7 | 2010-05-13 | 0.7.0 | 2010-05-13 | |
더 되지 않음 0.8 | 2010-12-17 | 0.8.1 | 2011-04-24 | |
더 되지 않음 0.9 | 2011-07-29 | 0.9.2 | 2012-01-22 | |
더 관리되지 않음 0.10 | 2012-01-22 | 0.10.1 | 2012-04-25 | |
더 관리되지 않음 0.11 | 2013-02-21 | 0.11.1 | 2013-04-01 | |
더 되지 않음 0.12 | 2013-10-14 | 0.12.1 | 2014-04-14 | |
이상 유지 0.13 | 2014-07-04 | 0.13.0 | 2014-07-04 | |
이상 유지 0.14 | 2014-11-20 | 0.14.0 | 2014-11-20 | |
이상 유지 버전 0.15 | 2015-06-06 | 0.15.0 | 2015-06-06 | |
더 관리되지 않음 0.16 | 2016-06-08 | 0.16.0 | 2016-06-08 | |
0.17 | 2017-06-19 | 0.17.0 | 2017-06-19 | |
범례: 구버전 이전 버전, 계속 유지 관리됨 최신 버전 최신 미리보기 버전 |
이름 지정
돼지 프로그래밍 언어의 명칭에 대해서는 기억에 남고 철자가 쉬우며 참신함을 위해 이름이 임의로 선택되어 붙었다.[7][8][9]
이 프로젝트를 진행 중인 연구자들이 처음에는 단순히 '언어'라고 불렀다는 내용이다.결국 그들은 그것을 무언가로 불러야 했다.그의 머리 꼭대기에서 한 연구원이 피그에게 제안했고, 그 이름은 고착되었다.그것은 특이하지만 기억에 남고 철자가 쉽다.일부는 그 이름이 수줍어하거나 바보처럼 들린다는 것을 암시했지만, 그것은 우리에게 언어를 위한 Pig Latin, 껍질을 위한 Grunt, 그리고 CPAN과 같은 공유 저장소를 위한 PiggyBank와 같은 재미있는 이름을 제공했다.
— Alan Gates, Daniel Dai, "What Is Pig?", Programming Pig, 2nd Edition (November 2017)
예
다음은 Pig Latin어로 된 "Word Count" 프로그램의 예다.
input_line = LOAD '/tmp/my-of-all-pages-on-internet'(라인:chararray); -- 각 줄에서 단어를 추출하여 돼지 가방에 넣으십시오. 데이터타입, 그리고 각 행 단어에서 한 단어를 얻으려면 백을 평평하게 하여 FOREACH input_line을 생성하십시오(라인).AS word; -- words filtered_words = FILTER words BY Words '\w+'; -- 각 words_groups filtered_words by words에 대한 그룹 생성, -- 각 그룹 word_count = FREACH word_groups의 항목 카운트(filtered_words) AS count; -- -- -- -- -- ordered_word_count = ORDER word_count BY 카운트 DESK; STORE ordered_word_count INT '/tmp/word-of-words-on-internet';
위의 프로그램은 하둡 클러스터의 여러 컴퓨터에 분산될 수 있는 병렬 실행 작업을 생성하여 인터넷의 모든 웹 페이지와 같은 데이터 집합의 단어 수를 계산한다.
돼지 vs SQL
SQL과 비교해서 Pig
- 내포된 관계 모델을 가지고 있으며,
- 게으른 평가를 사용한다.
- 추출, 변환, 로드(ETL) 사용
- 파이프라인을 사용하는 동안 어느 지점에서나 데이터를 저장할 수 있으며,
- 실행 계획을 선언한다.
- 파이프라인 분할을 지원하여 워크플로가 엄격하게 순차적인 파이프라인 대신 DAG를 따라 진행될 수 있도록 한다.
한편, DBMS는 일단 데이터가 로드되면 MapReduce 시스템보다 실질적으로 더 빠르지만, 데이터베이스 시스템에서는 데이터 로딩이 상당히 오래 걸린다는 주장이 제기되었다.또한 RDBMS가 컬럼 저장, 압축 데이터 작업, 효율적인 무작위 데이터 액세스를 위한 인덱스, 트랜잭션 수준의 내결함성을 즉시 지원한다는 주장도 제기되었다.[10]
피그 라틴어는 절차적이고 파이프라인 패러다임에서 매우 자연스럽게 들어맞는 반면 SQL은 선언적이다.SQL 사용자는 두 테이블의 데이터를 결합해야 하지만 어떤 조인 구현을 사용해야 하는지는 지정할 수 없다(SQL에서 JOIN의 구현을 지정할 수 있으므로 "...많은 SQL 애플리케이션의 경우 쿼리 작성자는 데이터에 대한 충분한 지식이나 적절한 조인 알고리즘을 지정하기에 충분한 전문지식을 갖지 못할 수 있다.").Pig Latin은 사용자가 스크립트 실행에 사용할 구현 또는 구현의 측면을 여러 가지 방법으로 지정할 수 있도록 한다.[11]실제로 Pig Latin 프로그래밍은 쿼리 실행 계획을 지정하는 것과 유사하여 프로그래머가 데이터 처리 작업의 흐름을 명시적으로 제어하기 쉽다.[12]
SQL은 단일 결과를 생성하는 쿼리를 중심으로 한다.SQL은 나무를 자연스럽게 처리하지만, 데이터 처리 스트림을 분할하고 각 서브스트림에 서로 다른 연산자를 적용하는 메커니즘은 내장되어 있지 않다.Pig Latin 스크립트는 파이프라인보다는 방향의 Acyclic graph(DAG)를 설명한다.[11]
파이프라인의 어느 지점에서나 사용자 코드를 포함하는 Pig Latin의 능력은 파이프라인 개발에 유용하다.SQL을 사용할 경우 먼저 데이터를 데이터베이스로 가져와야 하며, 그 다음 클렌징 및 변환 프로세스를 시작할 수 있다.[11]
참고 항목
참조
- ^ a b "Hadoop: Apache Pig". Retrieved Sep 2, 2011.
- ^ "[PIG-4167] Initial implementation of Pig on Spark - ASF JIRA". issues.apache.org. Retrieved 2018-12-29.
- ^ "Pig user defined functions". Retrieved May 3, 2013.
- ^ "Yahoo Blog:Pig – The Road to an Efficient High-level language for Hadoop". Archived from the original on February 3, 2016. Retrieved May 23, 2015.
- ^ "Pig into Incubation at the Apache Software Foundation". Archived from the original on February 3, 2016. Retrieved May 23, 2015.
- ^ "Apache Pig Releases". Apache. Retrieved 2019-03-13.
- ^ "1. What Is Pig? - Programming Pig, 2nd Edition [Book]". www.oreilly.com. Retrieved 2021-08-01.
- ^ Gates, Alan (2016). Programming Pig. Daniel Dai (Second ed.). Sebastopol, CA. ISBN 978-1-4919-3706-8. OCLC 964523786.
- ^ Gates, Alan (2021-07-27). "Pig mascot questions". Pig User Mailing List (Mailing list). Archived from the original on 1 August 2021. Retrieved 1 August 2021.
- ^ "Communications of the ACM: MapReduce and Parallel DBMSs: Friends or Foes?" (PDF). Archived from the original (PDF) on July 1, 2015. Retrieved May 23, 2015.
- ^ a b c "Yahoo Pig Development Team: Comparing Pig Latin and SQL for Constructing Data Processing Pipelines". Archived from the original on May 30, 2015. Retrieved May 23, 2015.
- ^ "ACM SigMod 08: Pig Latin: A Not-So-Foreign Language for Data Processing" (PDF). Retrieved May 23, 2015.