복붙노트

[HADOOP] 가방 안에 랭크?

HADOOP

가방 안에 랭크?

set_of_values가 있다고 가정 해 봅시다.

a, k
a, l
a, m
b, x
b, y
b, z

내가 사용하면

a = RANK set_of_values;

나는 얻다:

1, a, k
2, a, l
3, a, m
4, b, x
5, b, y
6, b, z

내가 성취하고 싶은 것은 RANK이지만 그룹 내부입니다. 먼저 :

a = group set_of_values by first_value;

(a,{(a,k),(a,l),(a,m)})
(b,{(b,x),(b,y),(b,z)})

그리고 지금 무엇을해야합니까 :

(a,{(1,a,k),(2,a,l),(3,a,m)})
(b,{(1,b,x),(2,b,y),(3,b,z)})

편집 (foreach 내부에 RANK 추가)

b = foreach a { c = RANK $1; generate c; }

나는 얻다:

2014-03-05 09:55:05,601 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 5, column 20>  Syntax error, unexpected symbol at or near 'RANK'
Details at logfile: /export/home/pig/pig_1394009645035.log

로그 파일 :

ERROR 1200: <line 5, column 20>  Syntax error, unexpected symbol at or near 'RANK'

Failed to parse: <line 5, column 20>  Syntax error, unexpected symbol at or near 'RANK'
        at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:235)
        at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:177)
        at org.apache.pig.PigServer$Graph.validateQuery(PigServer.java:1571)
        at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1544)
        at org.apache.pig.PigServer.registerQuery(PigServer.java:516)
        at org.apache.pig.tools.grunt.GruntParser.processPig(GruntParser.java:988)
        at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:412)
        at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:194)
        at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:170)
        at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:69)
        at org.apache.pig.Main.run(Main.java:538)
        at org.apache.pig.Main.main(Main.java:157)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:160)

해결법

  1. ==============================

    1.답장이 너무 늦었을 수도 있지만 누군가가 스택 오버플로에만 이것을 게시했습니다. Apache Pig 순위 기능 사용

    답장이 너무 늦었을 수도 있지만 누군가가 스택 오버플로에만 이것을 게시했습니다. Apache Pig 순위 기능 사용

    추신 : 그는 DataFu UDF : Enumerate 사용하고 있으며 그것은 나를 위해 일했습니다.

  2. from https://stackoverflow.com/questions/22151364/rank-inside-the-bag by cc-by-sa and MIT license