任何更快的方法来计算 Pig 中的行数

Posted

技术标签:

【中文标题】任何更快的方法来计算 Pig 中的行数【英文标题】:Any faster way to count rows in Pig 【发布时间】:2016-09-28 05:38:15 【问题描述】:

我关注了This Stack Over Flow question,其中显示了如何计算猪的行数。

我发现的问题是,如果我在尝试计算已过滤变量的行数之前进行一些正则表达式过滤器匹配和其他操作,这将非常耗时。

这是我的代码

all_data = load '/logs/chat1.log' USING TextLoader() as line:chararray;
match_filter_1 = filter all_data by ( line matches 'some regex');
inputGroup = GROUP match_filter_1 ALL;
totalLine = foreach inputGroup generate COUNT (match_filter_1);
dump totalLine;

那么,有什么方法可以更快地获得结果?

【问题讨论】:

你的数据大小是多少 现在是演示数据大小,如 2 GB。 【参考方案1】:

使用 PARALLEL 子句增加作业的并行度:

PARALLEL 为 Pig 生成的 MapReduce 作业设置 reduce 任务的数量。默认值为 1(一个 reduce 任务)。 PARALLEL 只影响 reduce 任务的数量。映射并行度由输入文件决定,每个 HDFS 块一个映射。 如果您不指定 PARALLEL,您仍然会获得相同的 map 并行度,但只有一个 reduce 任务。

A = LOAD 'myfile' AS (t, u, v);
B = GROUP A BY t PARALLEL 18;

希望对您有所帮助!!!...

【讨论】:

目前我的养猪工作推迟了。所以我现在不能尝试这个,所以接受或拒绝。但是一旦我恢复工作,我一定会尝试这个并希望做出积极的评价。

以上是关于任何更快的方法来计算 Pig 中的行数的主要内容,如果未能解决你的问题,请参考以下文章

比 wc -l 更快、更精确地计算行数的方法

正确计算确切编号的方法。使用 PHP PDO 的 SQL 中的行数

如何有效地计算数据帧的行数? [复制]

在不计算的情况下获取 Spark 数据框中的行数

计算 SQLite 数据库中的行数

如何加快计算 PostgreSQL 表中的行数?