как мне установить одну переменную равной другой в латинской свиньи - PullRequest
1 голос
/ 10 марта 2012

Я бы хотел сделать

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 [main] ОШИБКА org.apache.pig.tools.grunt.Grunt - ОШИБКА 1200: несоответствующий ввод ';' ожидая LEFT_PAREN Подробности в лог-файле: /home/hadoop/pig_1331342327467.log

так что, похоже, свинье это не нравится. Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Я не думаю, что такое «типичное» задание работает на свинье.На самом деле это не язык программирования в строгом смысле - это язык высокого уровня поверх hadoop с некоторыми специализированными функциями.

Я думаю, вам нужно будет просто перепроектировать данные из subject1 в subject2,например:

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

другим подходом может быть использование функции LIMIT с каким-то абсурдно высоким параметром.

subjects2 = subjects2 LIMIT 100000000;

Причин может быть многопочему это не имеет смысла, но это мысль.

я чувствую, что вы думаете о том, чтобы делать что-то, как если бы вы использовали язык программирования

  • я обнаружил, что редко получается так, какВы хотите этого, но вы всегда можете выполнить свою работу, если будете думать, как Свинья.
0 голосов
/ 17 июня 2013

Насколько я понимаю, ваш пример из курса DataScience. Странно, но я нашел такую ​​же проблему. Этот код работает с одним количеством данных, а с другим - нет.

Поскольку нам нужно изменить параметры, я использовал этот код:

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