标签: apache-pig

如何在Apache Pig中使用PigStorage存储gzip压缩文件?

Apache Pig v0.7可以读取gzip文件而不需要额外的努力,例如:

MyData = LOAD '/tmp/data.csv.gz' USING PigStorage(',') AS (timestamp, user, url);
Run Code Online (Sandbox Code Playgroud)

我可以处理该数据并将其输出到磁盘上:

PerUser = GROUP MyData BY user;
UserCount = FOREACH PerUser GENERATE group AS user, COUNT(MyData) AS count;
STORE UserCount INTO '/tmp/usercount' USING PigStorage(',');
Run Code Online (Sandbox Code Playgroud)

但输出文件未压缩:

/tmp/usercount/part-r-00000
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉STORE命令以gzip格式输出内容?请注意,理想情况下我想要一个适用于Pig 0.6的答案,因为我希望使用Amazon Elastic MapReduce; 但如果有任何版本的猪的解决方案,我想听听它.

apache-pig

10
推荐指数
2
解决办法
1万
查看次数

如何部署和运行oozie工作?

我正在尝试使用oozie做一个简单的工作.
这将是一个简单的猪行动.

我有一个文件:FirstScript.pig包含:

dual = LOAD 'default.dual' USING org.apache.hcatalog.pig.HCatLoader();
store dual into 'dummy_file.txt' using PigStorage();
Run Code Online (Sandbox Code Playgroud)

和一个workflow.xml包含:

<workflow-app name="FirstWorkFlow" xmlns="uri:oozie:workflow:0.2">
    <start to="FirstJob"/> 
    <action name="FirstJob">
        <pig>
            <job-tracker>hadoop:50300</job-tracker>
            <name-node>hdfs://hadoop:8020</name-node>
            <script>/FirstScript.pig</script>
        </pig>
        <ok to="okjob"/>
        <error to="errorjob"/>
    </action>
    <ok name='okjob'>    
        <message>job OK, message[${wf:errorMessage()}]</message>
    </ok>    
    <error name='errorjob'>    
        <message>job error, error message[${wf:errorMessage()}]</message>
    </error>    
</workflow-app>
Run Code Online (Sandbox Code Playgroud)

我创建了结构:

FirstScript
|- lib
|---FirstScript.pig
|- workflow.xml
Run Code Online (Sandbox Code Playgroud)

现在怎么办?如何部署它并与oozie一起运行?
任何人都可以获得经验帮助

关心
帕维尔

hadoop apache-pig oozie

10
推荐指数
1
解决办法
2万
查看次数

无法推断COUNT函数

我正在尝试编写一个pig latin脚本来提取我已经过滤的数据集的计数.

到目前为止这是脚本:

/* scans by title */

scans           = LOAD '/hive/scans/*' USING PigStorage(',') AS (thetime:long,product_id:long,lat:double,lon:double,user:chararray,category:chararray,title:chararray);
productscans    = FILTER scans BY (title MATCHES 'proactiv');
scancount       = FOREACH productscans GENERATE COUNT($0);
DUMP scancount;
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我收到错误:

无法将org.apache.pig.builtin.COUNT的匹配函数推断为多个或不适合.请使用明确的演员.

我在这做错了什么?我假设它与我传入的字段类型有关,但我似乎无法解决这个问题.

TIA,Jason

apache-pig

9
推荐指数
2
解决办法
1万
查看次数

Apache Pig:组操作后的条带命名空间前缀(::)

我的数据处理中的一个常见模式是按一组列进行分组,应用过滤器,然后再次展平.例如:

my_data_grouped = group my_data by some_column;
my_data_grouped = filter my_data_grouped by <some expression>;
my_data = foreach my_data_grouped flatten(my_data);
Run Code Online (Sandbox Code Playgroud)

这里的问题是,如果my_data在此操作之后以类似(c1,c2,c3)的模式开始,它将具有类似(mydata :: c1,mydata :: c2,mydata :: c3)的模式.如果列是唯一的,有没有办法轻松剥离"mydata ::"前缀?

我知道我可以这样做:

my_data = foreach my_data generate c1 as c1, c2 as c2, c3 as c3;
Run Code Online (Sandbox Code Playgroud)

然而,对于具有大量列的数据集而言,这很难维护并且对于具有可变列的数据集是不可能的.

apache-pig

9
推荐指数
1
解决办法
1753
查看次数

使用PigLatin删除重复项

我正在使用PigLatin过滤一些记录.

User1  8 NYC 
User1  9 NYC 
User1  7 LA 
User2  4 NYC
User2  3 DC 
Run Code Online (Sandbox Code Playgroud)

该脚本应删除用户的副本,并保留其中一个记录.像linux中的唯一命令.

输出应该是:

User1 8 NYC 
User2 4 NYC
Run Code Online (Sandbox Code Playgroud)

有什么建议?

apache-pig

9
推荐指数
1
解决办法
2万
查看次数

猪,如何在一个连接和一个组之后引用一个字段

我在Pig中有这个代码(win,request和response只是直接从filesystem加载的表):

win_request = JOIN win BY bid_id, request BY bid_id;
win_request_response = JOIN win_request BY win.bid_id, response BY bid_id;

win_group = GROUP win_request_response BY (win.campaign_id);

win_count = FOREACH win_group GENERATE group, SUM(win.bid_price);
Run Code Online (Sandbox Code Playgroud)

基本上我想在加入和分组后总结bid_price,但是我收到一个错误:

Could not infer the matching function for org.apache.pig.builtin.SUM as multiple or none of them fit. Please use an explicit cast.
Run Code Online (Sandbox Code Playgroud)

我的猜测是我没有正确指出win.bid_price.

hadoop apache-pig

9
推荐指数
1
解决办法
5164
查看次数

在通过'pig -x local'使用grunt时,如何在使用DUMP命令时抑制无用信息的膨胀?

我正在使用PigLatin,使用咕噜声,每次我倾倒'东西,我的控制台被骂等等等等,等等非信息,有没有办法压制所有这些?

grunt> A = LOAD 'testingData' USING PigStorage(':'); dump A; 

2013-05-06 19:42:04,146 [main] INFO org.apache.pig.tools.pigstats.ScriptState - 脚本中使用的Pig功能:UNKNOWN
2013-05-06 19:42:04,147 [main] INFO
组织. apache.pig.backend.hadoop.executionengine.mapReduceLayer.MRCompiler - 文件级联阈值:100乐观?假...
...
---另一个像50行无用的情况下在这里重挫垃圾......直到--- ...
...
org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher -成功!

现在我喜欢4行信息寻找:

(daemon,*,1,1,System Services,/var/root,/usr/bin/false)
(uucp,*,,,/var/spool/uucp,/usr/sbin/uucico)
(taskgated,*,13,13,Task Gate Daemon,/var/empty,/usr/bin/false)
(networkd,*,24,24,Network Services,/var/empty,/usr/bin/false)
(installassistant,*,25,25,/usr/bin/false)
grunt>

--->显然如果它有错误,很好的信息有用,但不是当它基本上工作得很好.

dump verbosity apache-pig gruntjs

9
推荐指数
2
解决办法
7062
查看次数

猪条件算子

考虑以下关系

test = LOAD 'input' USING PigStorage(',') as (a:chararray, b:chararray);
Run Code Online (Sandbox Code Playgroud)

有没有办法实现以下目标

if (b == 1) {
    a = 'abc';
else if (b == 2) {
    a = 'xyz';
else 
    // retain whatever is there in the column 'a'
Run Code Online (Sandbox Code Playgroud)

apache-pig

9
推荐指数
1
解决办法
1万
查看次数

如何在Pig中JOIN后删除重复的列?

让我说JOIN两个关系如下:

-- part looks like:
-- 1,5.3
-- 2,4.9
-- 3,4.9

-- original looks like:
-- 1,Anju,3.6,IT,A,1.6,0.3
-- 2,Remya,3.3,EEE,B,1.6,0.3
-- 3,akhila,3.3,IT,C,1.3,0.3

jnd = JOIN part BY $0, original BY $0;
Run Code Online (Sandbox Code Playgroud)

输出将是:

1,5.3,1,Anju,3.6,IT,A,1.6,0.3
2,4.9,2,Remya,3.3,EEE,B,1.6,0.3
3,4.9,3,akhila,3.3,IT,C,1.3,0.3
Run Code Online (Sandbox Code Playgroud)

请注意,$0每个元组中显示两次.例如:

1,5.3,1,Anju,3.6,IT,A,1.6,0.3
^     ^
|-----|
Run Code Online (Sandbox Code Playgroud)

我可以通过执行以下操作手动删除重复键:

jnd = foreach jnd generate $0,$1,$3,$4 ..;
Run Code Online (Sandbox Code Playgroud)

有没有办法动态删除它?喜欢remove(the duplicate key joiner).

java hadoop join apache-pig

9
推荐指数
1
解决办法
4561
查看次数

猪脚本无负载

我是猪的新手.我试图找出如何使用硬编码值定义包或元组,而无需从文件加载数据.我遇到的每个例子都以:

a = LOAD'/ file/name'使用PigStorage(',');

或类似的东西.我只想创建一个这样的元组或包:

a = <1,2,3>;

是否可以将硬编码值用于测试目的?

谢谢.

hadoop apache-pig

9
推荐指数
1
解决办法
694
查看次数

标签 统计

apache-pig ×10

hadoop ×4

dump ×1

gruntjs ×1

java ×1

join ×1

oozie ×1

verbosity ×1