标签: apache-pig

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
查看次数

如何从猪地图中获取变量键的值?

有没有办法可以使用字段作为键来获取变量键的映射值?例如:我的公司数据具有这样的区域设置和名称字段

 {"en_US", (["en_US" : "English Name"], ["fr_FR" : "French Name"])}
Run Code Online (Sandbox Code Playgroud)

我真正想要的是使用locale作为关键字获取地图的价值,因为不同的语言环境会有所不同.

company_data = load '/data' using PigStorage();

final_company_data = FOREACH company_data GENERATE
                                             value.locale as locale
                                             value.name#locale;
Run Code Online (Sandbox Code Playgroud)

以下给出了一个错误,因为我明白要从地图中检索一个值,我们需要value.name#'en_US'.有没有办法我们可以使用语言环境,以便取代正确的值?

Output : final_company_data = {"en_US", "English Name"}
Run Code Online (Sandbox Code Playgroud)

hadoop apache-pig

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

PIG local和mapreduce模式之间的区别

在本地运行PIG脚本和在mapreduce上运行PIG脚本有什么区别?我理解mapreduce模式是在安装了hdfs的集群上运行它.这是否意味着本地模式不需要HDFS,因此即使mapreduce作业也不会被触发?有什么区别,你什么时候对方?

hadoop mapreduce apache-pig hdfs

8
推荐指数
2
解决办法
6410
查看次数

错误1066:无法在Pig,Generic解决方案中打开别名的迭代器

Apache Pig中一个非常常见的错误消息是:

错误1066:无法打开别名的迭代器

有几个问题提到了这个错误,但没有一个提供处理它的通用方法.因此这个问题:

当你收到错误1066时该怎么办:无法打开别名的迭代器?

debugging apache-pig hortonworks-data-platform hdp

8
推荐指数
1
解决办法
9909
查看次数