2012-03-10 3 views
1

내가는 어떻게 라틴어 돼지 서로 동등한 변수 하나가

register s3n://uw-cse344-code/myudfs.jar 
-- load the test file into Pig 
--raw = LOAD 's3n://uw-cse344-test/cse344-test-file' USING TextLoader as (line:chararray); 
-- later you will load to other files, example: 
raw = LOAD 's3n://uw-cse344/btc-2010-chunk-000' USING TextLoader as (line:chararray); 

-- parse each line into ntriples 
ntriples = foreach raw generate FLATTEN(myudfs.RDFSplit3(line)) as (subject:chararray,predicate:chararray,object:chararray); 

--filter 1 
subjects1 = filter ntriples by subject matches '.*rdfabout\\.com.*' PARALLEL 50; 
--filter 2 
subjects2 = subjects1; 

을하고 싶으면 어떻게 설정합니까하지만 오류를 얻을 :

2012-03-10 01 : 19 : 18,039 [주] 오류 org.apache.pig.tools.grunt.Grunt - 오류 1200 : 일치하지 않는 입력 ';' 예상 LEFT_PAREN 로그 파일의 세부 정보 : /home/hadoop/pig_1331342327467.log

돼지는 그렇게 생각하지 않습니다. 어떻게해야합니까?

답변

2

돼지에서 '일반적인'할당이 작동하지 않는다고 생각합니다. 엄밀히 말해서 프로그래밍 언어가 아닙니다. 특수 기능을 갖춘 고급 언어입니다.

난 당신이 단순히 같은 subjects2에 subjects1에서 데이터를 프로젝트 다시해야합니다 생각 :

subjects2 = foreach subjects1 generate $0, $1, $2; 

또 다른 접근 방식은 일부 불합리하게 높은 매개 변수와 함께 LIMIT 기능을 사용할 수 있습니다.

subjects2 = subjects2 LIMIT 100000000;

이유가 많은 이유가 그것이 의미가없는 이유가 될 수 있지만 생각입니다.

난 당신이 당신이 원하는 그러나 당신이 돼지처럼 생각하면 당신은 항상 작업을 끝낼 수있는 것처럼 좀처럼 밖으로 작동하지 내가 발견 한 프로그래밍 언어

  • 에서와 마찬가지로 일을 고려하고 감지.
0

나는 DataScience coursera 코스에 대한 귀하의 예를 이해합니다. 이상한 일이지만 같은 문제가 발견되었습니다. 이 코드는 데이터의 양에 대해 작동하며 다른 데이터에는 적용되지 않습니다.

우리는이 코드를 사용 매개 변수를 변경해야하기 때문에 :

filtered2 = foreach filtered generate subject as subject2, predicate as predicate2, object as object2;