在幻灯片36和37的this presentation中- Cascalog的作者断言,给定一个包含姓名和年龄的数据集:姓名、年龄,返回大于平均年龄的所有结果的查询是300行猪。
这是一个有效的断言吗?猪到底有几行?
或者他所描述的问题比我所描述的更大?
(免责声明-我是Nathan的工作,Clojure和Cascalog的超级粉丝-我只是想弄清楚一些事实)。
发布于 2013-01-26 20:10:49
你曲解了他在这次演讲中所说的话。他的意思是,在PIG中实现的“平均”是300行java代码,而不是由宏谓词功能实现的5行cascalog。他想强调作文的力量。
PD:很抱歉我的英语不好,我正在学习;-)
发布于 2013-01-26 15:32:16
我不认为在PIG中会有300行代码。PIG已经有了过滤器构造和AVG计算功能。PIG中的代码类似于:
A = LOAD 'student.txt' AS (name:chararray, age:int);
B = FILTER A BY age > AVG(A.age);注意:我还没有尝试过这个代码,因为我的机器上没有PIG设置。
发布于 2013-01-26 15:28:16
在常规SQL中,它是微不足道的- select count(*) from TableName where age>(select avg from TableName)
但它要求底层引擎能够检测到最新的select是独立子查询(否则它将永远工作)。
把它分成两个运算符应该很简单-一个是选择平均年龄,第二个是计算上面的这些。
https://stackoverflow.com/questions/14533830
复制相似问题