hadoop - PIG-从一个大型输入中优化各种分组结构的最佳方法

标签 hadoop apache-pig

我正在使用Pig来获取表单的一个大txt文件

A栏| B列| C栏|上校D |上校E |上校|上校

我的目标是采用此输入并按列的各种组合进行分组,以获得类似的内容

(颜色A /颜色B)| Count(Col F)|总和(Col G)

(Col A / Col C)| Count(Col F)|总和(Col G)

(Col A / Col D)| Count(Col F)|总和(Col G)

(Col B / Col C)| Count(Col F)|总和(Col G)

我想知道是否有结构我的 pig 代码的方法,以便只需要处理数据最少的次数,因为输入保持不变并且所有更改的都是分组。

先谢谢了。

最佳答案

Pig会自动执行此优化。如果您始终将分组应用于原始数据,则所有分组都可以并行完成,并且将在单个map-reduce作业中执行。

假设您希望对每个分组执行相同的操作,则应定义一个宏,以便节省一些键入内容。例如:

DEFINE DO_STUFF(input, grp1, grp2) RETURNS result {
    grouped = GROUP $input BY ($grp1, $grp2);
    $result = FOREACH grouped GENERATE FLATTEN(group), COUNT(grouped.F), SUM(grouped.G);
};

data = LOAD '/path/to/txt' AS (A, B, C, D, E, F, G:int);
W = DO_STUFF(data, A, B);
X = DO_STUFF(data, A, C);
Y = DO_STUFF(data, A, D);
Z = DO_STUFF(data, B, C);

关于hadoop - PIG-从一个大型输入中优化各种分组结构的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17222210/

相关文章:

windows - 我正在尝试在 Windows 7 x64 上构建 Apache Hadoop 2.5.0,但我一直遇到未知错误

scala - 如何过滤掉 spark 数据框中的 bool 字段?

hadoop - Apache Pig 中的连接错误

mysql - 无法读取输入文件: Pig store to MYSQL using DBStorage

hadoop - 在 pig 中有条件地分组记录

java - pig 服务器 log4j :ERROR Could not instantiate class [org. apache.hadoop.log.metrics.EventCounter]

hadoop - 在hadoop中以多种输出格式使用part-m-00000

sql - 无法从Spark读取hadoop/hive外部S3表

sql - regexp_extract在Hive中查找值

hadoop - pig : Filter a string on a basis of a phrase