2012-03-10 32 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:18039 [主] ERROR org.apache.pig.tools.grunt.Grunt - 錯誤1200:不匹配的輸入';'期待LEFT_PAREN 日誌文件的詳細信息:/home/hadoop/pig_1331342327467.log

所以看起來豬不喜歡那樣。我該如何做到這一點?

回答

2

我不認爲那種「典型」的作業在豬身上起作用。從嚴格意義上說,它並不是一門真正的編程語言 - 它是一個高級語言,在hadoop之上還有一些專門的功能。

我想你會需要簡單地從subjects1重新項目的數據subjects2,如:

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

另一種方法可能是使用限制功能有些高得離譜的參數。

subjects2 = subjects2 LIMIT 100000000;

可能有很多原因爲什麼沒有道理,但這是一個想法。

我感覺到你正在考慮做的事情,你會在編程語言

  • 我已經找到像你想它,但你可以隨時一旦你覺得像豬八戒把工作做好是很少奏效了。
0

正如我理解您的來自DataScience coursera課程的示例。 這很奇怪,但我發現了同樣的問題。此代碼適用於數據量而不在另一個上。

因爲我們需要改變參數,我用這個代碼:

filtered2 = foreach filtered generate subject as subject2, predicate as predicate2, object as object2; 
相關問題