小编mr2*_*ert的帖子

Pig 0.11.1 - 计算时间范围内的组

我有一个数据集,A有时间戳,访问者,URL:

(2012-07-21T14:00:00.000Z, joe, hxxp:///www.aaa.com) 
(2012-07-21T14:01:00.000Z, mary, hxxp://www.bbb.com) 
(2012-07-21T14:02:00.000Z, joe, hxxp:///www.aaa.com) 
Run Code Online (Sandbox Code Playgroud)

我想在一个时间窗口(例如10分钟)内测量每个用户每个用户的访问次数,但是作为一个滚动窗口,按分钟递增.输出将是:

(2012-07-21T14:00 to 2012-07-21T14:10, joe, hxxp://www.aaa.com, 2)
(2012-07-21T14:01 to 2012-07-21T14:11, joe, hxxp://www.aaa.com, 1)
Run Code Online (Sandbox Code Playgroud)

为了简化算术,我将时间戳更改为一天中的分钟,如下所示:

(840, joe, hxxp://www.aaa.com) /* 840 = 14:00 hrs x 60 + 00 mins) */
Run Code Online (Sandbox Code Playgroud)

要通过移动时间窗口迭代'A',我在当天创建一个分钟数据集B:

(0)
(1)
(2)
.
.
.
.
(1440)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想做的事情如下:

A = load 'dataset1' AS (ts, visitor, uri)
B = load 'dataset2' as (minute)

foreach B {
C = filter A by ts > minute AND ts < minute + …
Run Code Online (Sandbox Code Playgroud)

hadoop mapreduce range apache-pig

6
推荐指数
1
解决办法
1878
查看次数

Hadoop Pig计数

我现在正在学习如何使用Hadoop Pig.

如果我有这样的输入文件:

a,b,c,true
s,c,v,false
a,s,b,true
...
Run Code Online (Sandbox Code Playgroud)

最后一个字段是我需要计算的字段...所以我想知道这个文件中有多少'true'和'false'.

我尝试:

records = LOAD 'test/input.csv' USING PigStorage(',');
boolean = foreach records generate $3;
groups = group boolean all;
Run Code Online (Sandbox Code Playgroud)

现在我卡住了.我想用:

count = foreach groups generate count('true');" 
Run Code Online (Sandbox Code Playgroud)

要获得"真实"的数量,但我总是得到错误:

2013-08-07 16:32:36,677 [main] ERROR org.apache.pig.tools.grunt.Grunt - 错误1070:无法使用导入解析计数:[,org.apache.pig.builtin.,org.apache .pig.impl.builtin.]日志文件的详细信息:/etc/pig/pig_1375911119028.log

谁能告诉我问题出在哪里?

hadoop mapreduce apache-pig

6
推荐指数
1
解决办法
7735
查看次数

Pig 中的“group as”是如何工作的?

我无法理解循环是如何group by group_name工作的foreach

假设我们已经有一个名为的变量,grouped_data其定义为:

grouped_data = group dataset by (emp_id, dept_id);
Run Code Online (Sandbox Code Playgroud)

然后我们想要迭代每个记录并grouped_data添加聚合列。因此编写如下:

with_hours_worked = FOREACH grouped_data 
                    GENERATE group AS grp, 
                             SUM(dataset.worked_hours) AS hours ;
Run Code Online (Sandbox Code Playgroud)

我对最后一行发生的事情感到困惑,尤其是那group AS grp部分。是grp一个元组吗?线路是否grouped_data转换回组?如果是这样,为什么?

apache-pig

5
推荐指数
1
解决办法
756
查看次数

猪脚本无法加载可空的镶木地板数据

我正在尝试编写一个Pig脚本来压缩具有镶木地板格式数据的小文件.下面提到的行试图加载目录中的小文件,然后存储它们.这些文件具有复杂的嵌套结构,这些结构可以为空,并且它们包含许多NULLs.

LOGS = LOAD '/dt=20150307/hr=2015030700/*' USING parquet.pig.ParquetLoader();
STORE LOGS INTO '/user/compaction_output' USING parquet.pig.ParquetStorer();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

2015-04-29 17:00:45,883 [main] ERROR org.apache.pig.tools.pigstats.SimplePigStats - ERROR 2118: Cannot build an empty group
Run Code Online (Sandbox Code Playgroud)

我怀疑是因为输入文件中的空值.有人可以帮忙吗?

apache-pig parquet

5
推荐指数
0
解决办法
270
查看次数

C++ ifstream ofstream实现?

我一直在编写这个Pig Latin程序,将英语转换为猪拉丁语,我一直在实现读取文件然后将其输出到另一个txt文件时遇到问题.

这是我到目前为止,但它不会编译因为

outputFile << pigLatin(englishWord) << ' ';
Run Code Online (Sandbox Code Playgroud)

这是源代码.有什么建议让它工作?谢谢

void pigLatin(string englishWord)
{
string piglatinWord;
bool truefalse = false;
int letter = 0, wordLength = englishWord.length( );

while (!truefalse && letter < wordLength) 
  {
    if (englishWord.substr(letter,1) == "a" || englishWord.substr(letter,1) == "e" ||englishWord.substr(letter,1) == "i" || englishWord.substr(letter,1) == "o" || englishWord.substr(letter,1) == "u")
        truefalse = true;
    else
        letter++; 
  }
if (letter > wordLength)
    piglatinWord = englishWord + "-way "; 
else
piglatinWord = englishWord.substr(letter, wordLength-letter) + englishWord.substr(0,letter)+ "-ay " ; …
Run Code Online (Sandbox Code Playgroud)

c++ ifstream ofstream

-1
推荐指数
1
解决办法
895
查看次数

标签 统计

apache-pig ×4

hadoop ×2

mapreduce ×2

c++ ×1

ifstream ×1

ofstream ×1

parquet ×1

range ×1