Apache Pig의 연산자 : 파트 1- 관계형 연산자



이 게시물은 Apache Pig의 연산자에 대해 설명합니다. Apache Pig의 Operators : Part 1-Relational Operators에 대한이 게시물을 살펴보세요.

이 게시물은 Apache Pig의 운영자에 관한 것입니다.Apache Pig를 사용하면 Java에 대한 지식 없이도 복잡한 데이터 변환을 작성할 수 있으므로 .Operators로 이동하기 전에 Pig 및 Pig Latin이 무엇인지, 그리고 작동 할 수있는 다양한 모드를 간략히 살펴 보겠습니다.

Apache Pig 란 무엇입니까?

Apache Pig는 Hadoop 및 Map Reduce Platform을 사용하여 대규모 데이터 세트를 쿼리하기위한 고급 절차 언어입니다. JVM에서 실행되는 모든 언어 구현에서 스크립트를 실행할 수있는 Java 패키지입니다. 이것은 반복적 인 프로세스에서 많이 사용됩니다.





자바에서 가장 큰 수 찾기

Apache Pig는 분산 데이터 세트에 SQL과 유사한 쿼리를 허용하여 Hadoop 사용을 단순화하고 복잡한 작업을 생성하여 대량의 데이터를 빠르고 효과적으로 처리 할 수 ​​있도록합니다. Pig의 가장 큰 특징은 Join, Group 및 Aggregate와 같은 많은 관계형 기능을 지원한다는 것입니다.

저는 Pig가 ETL 도구와 비슷하게 들리며 ETL 도구와 공통된 많은 기능을 가지고 있다는 것을 알고 있습니다. 그러나 ETL 도구에 비해 Pig의 장점은 여러 서버에서 동시에 실행할 수 있다는 것입니다.



Apache Pig Latin이란 무엇입니까?

Apache Pig는 Apache Pig Latin이라는 Hadoop 애플리케이션에 대해보다 구조화 된 쿼리 언어 (SQL)와 유사한 인터페이스를 제공하기 위해 Map Reduce를 통해 더 간단한 절차 적 언어 추상화를 생성하므로 별도의 Map Reduce 애플리케이션을 작성하는 대신 Apache에서 단일 스크립트를 작성할 수 있습니다. 자동으로 병렬화되고 클러스터에 분산되는 Pig Latin 간단히 말해서 Pig Latin은 입력을 받아 출력을 생성하는 일련의 간단한 문장입니다. 입력 및 출력 데이터는 백, 맵, 튜플 및 스칼라로 구성됩니다.

Apache Pig 실행 모드 :

Apache Pig에는 두 가지 실행 모드가 있습니다.

  • 로컬 모드

'로컬 모드'에서 소스 데이터는 컴퓨터 시스템의 로컬 디렉토리에서 선택됩니다. MapReduce 모드는 'pig –x local'명령을 사용하여 지정할 수 있습니다.



Apache Pig의 연산자-1

  • MapReduce 모드 :

MapReduce 모드에서 Pig를 실행하려면 Hadoop 클러스터 및 HDFS 설치에 액세스해야합니다. MapReduce 모드는‘pig’명령을 사용하여 지정할 수 있습니다.

Apache Pig 연산자 :

Apache Pig Operators는 Hadoop 및 Map Reduce Platform을 사용하여 대규모 데이터 세트를 쿼리하기위한 고급 절차 언어입니다. Pig Latin 문은 관계를 입력으로 사용하고 다른 관계를 출력으로 생성하는 연산자입니다. 이러한 연산자는 Pig Latin이 데이터 작업을 위해 제공하는 주요 도구입니다. 정렬, 그룹화, 결합, 프로젝션 및 필터링을 통해 변환 할 수 있습니다.

명령을 실행하기 위해 두 개의 파일을 만들어 보겠습니다.

이름이‘first’와‘second’인 파일이 두 개 있습니다. 첫 번째 파일에는 user, url, id라는 세 개의 필드가 있습니다.

두 번째 파일에는 URL 및 등급이라는 두 개의 필드가 있습니다. 이 두 파일은 CSV 파일입니다.

Apache Pig 연산자는 다음과 같이 분류 할 수 있습니다. 관계형 및 진단.

관계 연산자 :

관계 연산자는 Pig Latin이 데이터 작업을 위해 제공하는 주요 도구입니다. 정렬, 그룹화, 결합, 프로젝션 및 필터링을 통해 데이터를 변환 할 수 있습니다. 이 섹션에서는 기본적인 관계 연산자를 다룹니다.

하중:

LOAD 연산자는 파일 시스템 또는 HDFS 스토리지에서 Pig 관계로 데이터를로드하는 데 사용됩니다.

이 예에서 Load 연산자는 'first'파일에서 데이터를로드하여 관계 'loading1'을 형성합니다. 필드 이름은 사용자, URL, ID입니다.

각각:

이 연산자는 데이터 열을 기반으로 데이터 변환을 생성합니다. 관계에서 필드를 추가하거나 제거하는 데 사용됩니다. FOREACH-GENERATE 연산을 사용하여 데이터 열에 대해 작업합니다.

FOREACH 결과 :

필터:

이 연산자는 조건에 따라 관계에서 튜플을 선택합니다.

이 예에서 조건 'id'가 8보다 큰 경우 'loading1'에서 레코드를 필터링합니다.

필터 결과 :

어울리다:

JOIN 연산자는 공통 필드 값을 기반으로 두 개 이상의 관계에 대한 내부 동등 조인을 수행하는 데 사용됩니다. JOIN 연산자는 항상 내부 조인을 수행합니다. 내부 조인은 null 키를 무시하므로 조인 전에 필터링하는 것이 좋습니다.

이 예에서 ‘loading1’및‘loading2’의‘url’열을 기반으로 두 관계를 결합합니다.

참여 결과 :

주문:

정렬 기준은 하나 이상의 필드를 기준으로 관계를 정렬하는 데 사용됩니다. ASC 및 DESC 키워드를 사용하여 오름차순 또는 내림차순으로 정렬 할 수 있습니다.

아래 예제에서는 loading2의 데이터를 ratings 필드에서 오름차순으로 정렬하고 있습니다.

결과로 정렬 :

뚜렷한:

Distinct는 관계에서 중복 된 튜플을 제거합니다. 다음과 같이 입력 파일을 가져옵니다. amr, 쓰레기, 8amr, myblog, 10 파일에서 두 번. 이 파일의 데이터에 구별을 적용하면 중복 항목이 제거됩니다.

자바의 얕은 복사 및 깊은 복사

뚜렷한 결과 :

저장:

Store는 결과를 파일 시스템에 저장하는 데 사용됩니다.

여기서 우리는 절약하고 있습니다 loading3 데이터를 저장 HDFS에서.

매장 결과 :

그룹:

GROUP 연산자는 동일한 그룹 키 (키 필드)를 사용하여 튜플을 함께 그룹화합니다. 그룹 키에 두 개 이상의 필드가 있으면 키 필드는 튜플이되고, 그렇지 않으면 그룹 키와 동일한 유형이됩니다. GROUP 연산의 결과는 그룹당 하나의 튜플을 포함하는 관계입니다.

이 예에서 그룹 일

e 열 url에 의한 'loading1'관계.

그룹 결과 :

공동 그룹 :

COGROUP은 GROUP 연산자와 동일합니다. 가독성을 위해 프로그래머는 일반적으로 하나의 관계 만 관련된 경우 GROUP을 사용하고 여러 관계가 관련된 경우 COGROUP을 사용합니다.

이 예에서는 두 관계 모두에서 'loading1'및 'loading2'를 url 필드별로 그룹화합니다.

COGROUP 결과 :

가로 질러 가다:

CROSS 연산자는 둘 이상의 관계의 외적 (직교 곱)을 계산하는 데 사용됩니다.

loading1 및 loading2에 외적 적용.

교차 결과 :

한도:

LIMIT 연산자는 출력 튜플 수를 제한하는 데 사용됩니다. 지정된 출력 튜플 수가 관계의 튜플 수보다 크거나 같으면 출력에 관계의 모든 튜플이 포함됩니다.

제한 결과 :

스플릿:

SPLIT 연산자는 일부 표현식을 기반으로 관계의 내용을 둘 이상의 관계로 분할하는 데 사용됩니다. 식에 명시된 조건에 따라.

loading2를 두 개의 관계식 x와 y로 분할합니다. loading2에 의해 생성 된 x 관계에는 등급이 8보다 큰 필드가 포함되고 y 관계에는 등급이 8보다 작거나 같은 필드가 포함됩니다.

질문이 있으십니까? 댓글 섹션에 언급 해 주시면 다시 연락 드리겠습니다.

관련 게시물:

Apache Pig의 연산자 – 진단 연산자

Apache Pig에서 UDF를 만드는 단계