Сортировка по Pig Latin

Я тестирую следующий пример из документов Apache Pig:

http://pig.apache.org/docs/r0.14.0/basic.html#order-by

но функция сортировки, похоже, не работает. Есть идеи?

$ pig -version
Apache Pig version 0.14.0 (r1640057) 
compiled Nov 16 2014, 18:02:05


grunt> a= load 'data' as (c1:int, c2:int, c3:int);
grunt> describe a;
a: {c1: int,c2: int,c3: int}
grunt> dump a;
(1,2,3)
(4,2,1)
(8,3,4)
(4,3,3)
(7,2,5)
(8,4,3)
grunt> result = order a by c1 desc;
grunt> dump result; 
(8,4,3)
(8,3,4)
(4,3,3)
(4,2,1)
(1,2,3)
(7,2,5)
grunt> result = order a by c2 desc;
grunt> dump result;
(8,4,3)
(7,2,5)
(4,2,1)
(1,2,3)
(4,3,3)
(8,3,4)
grunt> result = order a by c3 desc;
grunt> dump result;                
(7,2,5)
(4,3,3)
(8,4,3)
(1,2,3)
(4,2,1)
(8,3,4)

person David    schedule 26.12.2014    source источник


Ответы (1)


Вы загружаете данные, используя разделитель по умолчанию (tab), но ваши фактические входные данные не разделены должным образом табуляцией. Можете ли вы убедиться, что ваши поля ввода данных разделены табуляцией в файле 'data'.

В приведенном ниже примере каждое поле ввода разделено вкладкой и работает нормально.

data:
1<TAB>2<TAB>3
4<TAB>2<TAB>1
8<TAB>3<TAB>4
4<TAB>3<TAB>3
7<TAB>2<TAB>5
8<TAB>4<TAB>3

grunt> a= load 'data' as (c1:int, c2:int, c3:int);
(1,2,3)
(4,2,1)
(8,3,4)
(4,3,3)
(7,2,5)
(8,4,3)
grunt> result = order a by c1 desc;
grunt> dump result;
(8,3,4)
(8,4,3)
(7,2,5)
(4,2,1)
(4,3,3)
(1,2,3)
grunt> result = order a by c2 desc;
grunt> dump result;
(8,4,3)
(8,3,4)
(4,3,3)
(1,2,3)
(4,2,1)
(7,2,5)
grunt> result = order a by c3 desc;
grunt> dump result; 
(7,2,5)
(8,3,4)
(1,2,3)
(4,3,3)
(8,4,3)
(4,2,1)
person Sivasakthi Jayaraman    schedule 26.12.2014