2014-11-28 4 views
1

돼지 라틴어로 기본 수학 연산을 수행하는 방법은 무엇입니까?
는 내가 그런트 쉘을 입력하고 예를 dump 1+2;을 위해 노력하지만, 가지고기본 수학 연산

2014년 11월 28일 23 : 23 : 48,011 [주] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2997 IOException이 발생했습니다. 이전에 정의 된 별칭을 찾지 못했습니다. 별칭을 정의하고 '덤프'연산자를 사용하십시오.

업데이트

A = 1 + 2 DUMP A을하는 내가 얻을 :

grunt> A = 1 + 2 DUMP A 
>> [ENTER] 
>> [ENTER] 
... 

답변

2

당신은 파이썬 쉘과 같은 것으로 무당 껍질을 사용할 수 없습니다. 돼지는 데이터 흐름 언어이며, 입력으로 관계를 취하고 출력으로 다른 관계를 생성합니다.

','
로드로 구분 기호를 사용하여 로컬 파일 시스템에서 파일

1,5,10.0 
2,6,20.0 
3,7,30.0 

input.txt를 : 돼지 stmts은 일반적으로

1.LOAD stmt to load data from local file system or HDFS file system 
2.A series of stmts to process the data using pig built-in function or Custom UDF 
3.DUMP stmt to display the data in console, it will take only relation as input(No constant values as you mentioned) 
4.STORE stmt to store the output into local file system or HDFS file system 

예,이 형태로 구성되어 있습니다

A = LOAD 'input.txt' USING PigStorage(',') AS (f1:int,f2:int,f3:float); 

프로세스 데이터는 DIFF 및 사업부

B = FOREACH A GENERATE f1+10 AS sum, f2-2 AS diff, f3/10 AS div; 

표시 당신은 돼지의 시리즈는 stmts 중 하나 툴툴 껍질이나 돼지 스크립트를 통해 실행할 수 있습니다

DUMP B; 

콘솔에 결과를 추가

그 루트 쉘 :

grunt> A = LOAD 'input.txt' USING PigStorage(',') AS (f1:int,f2:int,f3:float); 
grunt> B = FOREACH A GENERATE f1+10 AS sum, f2-2 AS diff, f3/10 AS div; 
grunt> DUMP B; 
(11,2,1.0) 
(12,3,2.0) 
(13,4,3.0) 

돼지 스크립트 :

1.Add the above three lines of pig stmt into a file Ex: test.pig 
2.Run from terminal 

돼지 -x 지역 test.pig (로컬 모드)

돼지 test.pig (또는) 돼지 -x 맵리 듀스 테스트.돼지 (맵리 듀스 모드)

기본적인 돼지 설명서를 참조하십시오, 그것은 당신에게 더 많은 https://pig.apache.org/docs/r0.13.0/basic.html#artichmetic-ops

도움이 될 것입니다