如何将数据排序到Pig中的Zebra表?

时间:2014-05-21 14:12:10

标签: hadoop apache-pig

我正在尝试使用TableStorer将CSV中未分类的数据存储到Pig中的Zebra表中。我是否需要在商店之前进行ORDER BY以确保它已排序和/或是否需要将一些信息传递给TableStorer以指示排序字段?

1 个答案:

答案 0 :(得分:1)

根据排序数据部分中的Zebra and Pig文档:

Pig允许您按升序或降序对数据进行排序(有关详细信息,请参阅Pig reference manual)。目前,Zebra支持按升序排序的表。 Zebra不支持按降序排序的表格;如果Zebra遇到要按降序排序的要存储的表,Zebra将发出警告并将该表存储为未排序的表。

因此,如果您想保存按降序排序的数据,最好在pig脚本中对数据元组进行排序,然后将它们存储到Zebra表中。在任何时候,Pig中的数据都是值的集合。通过执行简单的ORDER BY,可以在保存/存储到目标之前对数据进行排序。

示例:

A = LOAD 'data' AS (a1:int,a2:int,a3:int);

DUMP A;
(1,2,3)
(4,2,1)
(8,3,4)
(4,3,3)
(7,2,5)
(8,4,3)

在此示例中,关系A按第三个字段排序,f3按降序排序。请注意,以3结尾的三个元组的顺序可能会有所不同。

X = ORDER A BY a3 DESC;

DUMP X;
(7,2,5)
(8,3,4)
(1,2,3)
(4,3,3)
(8,4,3)
(4,2,1)

STORE X INTO 'output' USING org.apache.hadoop.zebra.pig.TableStorer('');