Apache Pig-아키텍처
Pig를 사용하여 Hadoop에서 데이터를 분석하는 데 사용되는 언어는 Pig Latin. 데이터에 대해 다양한 작업을 수행하기 위해 풍부한 데이터 유형 및 연산자 세트를 제공하는 고급 데이터 처리 언어입니다.
Pig를 사용하여 특정 작업을 수행하려면 프로그래머는 Pig 라틴어를 사용하여 Pig 스크립트를 작성하고 실행 메커니즘 (Grunt Shell, UDF, Embedded) 중 하나를 사용하여 실행해야합니다. 실행 후 이러한 스크립트는 Pig Framework에서 적용되는 일련의 변환을 거쳐 원하는 출력을 생성합니다.
내부적으로 Apache Pig는 이러한 스크립트를 일련의 MapReduce 작업으로 변환하므로 프로그래머의 작업이 쉬워집니다. Apache Pig의 아키텍처는 다음과 같습니다.
Apache Pig 구성 요소
그림과 같이 Apache Pig 프레임 워크에는 다양한 구성 요소가 있습니다. 주요 구성 요소를 살펴 보겠습니다.
파서
처음에는 Pig Script가 Parser에 의해 처리됩니다. 스크립트 구문을 확인하고 유형 확인 및 기타 기타 확인을 수행합니다. 파서의 출력은 Pig Latin 문과 논리 연산자를 나타내는 DAG (방향성 비순환 그래프)입니다.
DAG에서 스크립트의 논리 연산자는 노드로 표시되고 데이터 흐름은 가장자리로 표시됩니다.
옵티 마이저
논리적 계획 (DAG)은 프로젝션 및 푸시 다운과 같은 논리적 최적화를 수행하는 논리적 최적화 프로그램으로 전달됩니다.
컴파일러
컴파일러는 최적화 된 논리 계획을 일련의 MapReduce 작업으로 컴파일합니다.
실행 엔진
마지막으로 MapReduce 작업은 정렬 된 순서로 Hadoop에 제출됩니다. 마지막으로 이러한 MapReduce 작업은 Hadoop에서 실행되어 원하는 결과를 생성합니다.
돼지 라틴 데이터 모델
Pig Latin의 데이터 모델은 완전히 중첩되며 다음과 같은 복잡한 비 원자 데이터 유형을 허용합니다. map 과 tuple. 아래는 Pig Latin의 데이터 모델을 다이어그램으로 나타낸 것입니다.
원자
데이터 유형에 관계없이 Pig Latin의 모든 단일 값 유형은 Atom. 문자열로 저장되며 문자열과 숫자로 사용할 수 있습니다. int, long, float, double, chararray 및 bytearray는 Pig의 원자 값입니다. 데이터 또는 간단한 원자 값은field.
Example − 'raja'또는 '30'
튜플
정렬 된 필드 집합으로 구성된 레코드를 튜플이라고하며 필드는 모든 유형이 될 수 있습니다. 튜플은 RDBMS 테이블의 행과 유사합니다.
Example − (라자, 30 세)
가방
가방은 정렬되지 않은 튜플 집합입니다. 즉, 튜플 모음 (고유하지 않음)을 가방이라고합니다. 각 튜플은 여러 필드 (유연한 스키마)를 가질 수 있습니다. 가방은 '{}'로 표시됩니다. RDBMS의 테이블과 유사하지만 RDBMS의 테이블과 달리 모든 튜플이 동일한 수의 필드를 포함하거나 동일한 위치 (열)의 필드가 동일한 유형을 가질 필요는 없습니다.
Example − {(라자, 30), (모하마드, 45)}
가방은 관계의 필드가 될 수 있습니다. 그 맥락에서 그것은inner bag.
Example − {Raja, 30 세, {9848022338, [email protected],}}
지도
맵 (또는 데이터 맵)은 키-값 쌍의 집합입니다. 그만큼keychararray 유형이어야하며 고유해야합니다. 그만큼value모든 유형이 될 수 있습니다. '[]'로 표시됩니다.
Example − [이름 # 라자, 나이 # 30]
관계
관계는 튜플의 가방입니다. Pig Latin의 관계는 순서가 지정되지 않습니다 (튜플이 특정 순서로 처리된다는 보장은 없습니다).