아파치 피그

Apache Pig
아파치 피그
Apache Pig Logo
개발자Apache Software Foundation, Yahoo Research
초기 릴리즈2008년 9월 11일; 13년(2008-09-11)
안정적 해제
0.17.0 / 2017년 6월 19일; 4년(2017-06-19)
리포지토리
운영 체제Microsoft Windows, OS X, Linux
유형데이터 분석
면허증아파치 라이선스 2.0
웹사이트pig.apache.org

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

  1. 내포된 관계 모델을 가지고 있으며,
  2. 게으른 평가를 사용한다.
  3. 추출, 변환, 로드(ETL) 사용
  4. 파이프라인을 사용하는 동안 어느 지점에서나 데이터를 저장할 수 있으며,
  5. 실행 계획을 선언한다.
  6. 파이프라인 분할을 지원하여 워크플로가 엄격하게 순차적인 파이프라인 대신 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]

참고 항목

참조

  1. ^ a b "Hadoop: Apache Pig". Retrieved Sep 2, 2011.
  2. ^ "[PIG-4167] Initial implementation of Pig on Spark - ASF JIRA". issues.apache.org. Retrieved 2018-12-29.
  3. ^ "Pig user defined functions". Retrieved May 3, 2013.
  4. ^ "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.
  5. ^ "Pig into Incubation at the Apache Software Foundation". Archived from the original on February 3, 2016. Retrieved May 23, 2015.
  6. ^ "Apache Pig Releases". Apache. Retrieved 2019-03-13.
  7. ^ "1. What Is Pig? - Programming Pig, 2nd Edition [Book]". www.oreilly.com. Retrieved 2021-08-01.
  8. ^ Gates, Alan (2016). Programming Pig. Daniel Dai (Second ed.). Sebastopol, CA. ISBN 978-1-4919-3706-8. OCLC 964523786.
  9. ^ 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.
  10. ^ "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.
  11. ^ 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.
  12. ^ "ACM SigMod 08: Pig Latin: A Not-So-Foreign Language for Data Processing" (PDF). Retrieved May 23, 2015.

외부 링크