标签: apache-pig

如何在Apache Pig中使用map数据类型?

我想使用Apache Pig构建一个大键 - >值映射,在地图中查找并迭代键.然而,甚至似乎没有做这些事情的语法; 我检查了手册,维基,示例代码,象书,谷歌,甚至尝试解析解析器源.每个示例都从文件加载地图文字...然后从不使用它们.你怎么用Pig的地图?

首先,似乎没有办法直接将2列CSV文件加载到地图中.如果我有一个简单的map.csv:

1,2
3,4
5,6
Run Code Online (Sandbox Code Playgroud)

我尝试将其加载为地图:

m = load 'map.csv' using PigStorage(',') as (M: []);
dump m;
Run Code Online (Sandbox Code Playgroud)

我得到三个空元组:

()
()
()
Run Code Online (Sandbox Code Playgroud)

所以我尝试加载元组然后生成地图:

m = load 'map.csv' using PigStorage(',') as (key:chararray, val:chararray);
b = foreach m generate [key#val];
ERROR 1000: Error during parsing. Encountered " "[" "[ "" at line 1, column 24.
...
Run Code Online (Sandbox Code Playgroud)

语法的许多变体也会失败(例如generate [$0#$1]).

好的,所以我把我的地图变成Pig的地图文字格式map.pig:

[1#2]
[3#4]
[5#6]
Run Code Online (Sandbox Code Playgroud)

加载它:

m = load 'map.pig' as (M: []);
Run Code Online (Sandbox Code Playgroud)

现在让我们加载一些键并尝试查找:

k = …
Run Code Online (Sandbox Code Playgroud)

syntax hadoop map apache-pig

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

pig - 如何在JOIN之后引用FOREACH中的列?

A = load 'a.txt' as (id, a1);
B = load 'b.txt as (id, b1);
C = join A by id, B by id;
D = foreach C generate id,a1,b1;
dump D;
Run Code Online (Sandbox Code Playgroud)

第4行失败: Invalid field projection. Projected field [id] does not exist in schema

我试图改为A.id,但最后一行失败了: ERROR 0: Scalar has more than one row in the output.

apache-pig

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

如何在Pig中解析JSON?

我在s3中有很多gzip的日志文件,它有3种类型的日志行:b,c,i.我和c都是单级json:

{"this":"that","test":"4"}
Run Code Online (Sandbox Code Playgroud)

类型b是深度嵌套的json.我遇到了一个关于编译罐子来完成这项工作的要点.由于我的java技能不是很好,我真的不知道该怎么做.

{"this":{"foo":"bar","baz":{"test":"me"},"total":"5"}}
Run Code Online (Sandbox Code Playgroud)

由于类型i和c并不总是以相同的顺序,这使得指定生成正则表达式中的所有内容变得困难.使用Pig可以处理JSON(在gzip文件中)吗?我正在使用任何版本的Pig来自Amazon Elastic Map Reduce实例.

这归结为两个问题:1)我可以用猪解析JSON(如果是的话,如何)?2)如果我可以解析JSON(来自gzip的日志文件),我可以解析嵌套的JSON对象吗?

json apache-pig

19
推荐指数
3
解决办法
3万
查看次数

Apache Pig和Apache Hive有什么区别?

Pig和Hive有什么区别?我发现两者都具有相同的功能意义,因为它们用于做同样的工作.唯一的事情就是两种情况都有所不同.那么何时使用和哪种技术?两者的规格是否明确显示了两者在适用性和性能方面的差异?

hadoop hive apache-pig bigdata

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

如何在Pig中强制STORE(覆盖)到HDFS?

在开发使用STORE命令的Pig脚本时,我必须删除每次运行的输出目录,否则脚本会停止并提供:

2012-06-19 19:22:49,680 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 6000: Output Location Validation Failed for: 'hdfs://[server]/user/[user]/foo/bar More info to follow:
Output directory hdfs://[server]/user/[user]/foo/bar already exists
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找一个in-Pig解决方案来自动删除目录,如果目录在呼叫时不存在,那么该目录也不会阻塞.

在Pig Latin Reference中我找到了shell命令调用者fs.不幸的是,只要出现任何错误,Pig脚本就会中断.所以我不能用

fs -rmr foo/bar
Run Code Online (Sandbox Code Playgroud)

(即递归删除)因为如果目录不存在它会中断.我想我可以用一会儿

fs -test -e foo/bar
Run Code Online (Sandbox Code Playgroud)

这是一个测试,不应该打破或所以我想.但是,Pig再次将test不存在的目录上的返回代码解释为失败代码并中断.

Pig项目有一个JIRA票据解决了我的问题,并为STORE命令建议了一个可选参数OVERWRITEFORCE_WRITE.无论如何,我正在使用Pig 0.8.1,并且没有这样的参数.

apache-pig hdfs

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

猪:每组获得前n个值

我有已经分组和聚合的数据,它看起来像这样:

user    value      count
----    --------  ------
Alice   third      5
Alice   first      11
Alice   second     10
Alice   fourth     2
...
Bob     second     20
Bob     third      18
Bob     first      21
Bob     fourth     8
...
Run Code Online (Sandbox Code Playgroud)

对于每个用户(Alice和Bob),我想要检索他们的前n个值(比方说2),排序的'count'项.所以我想要的输出是这样的:

Alice first 11
Alice second 10
Bob first 21
Bob second 20
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

hadoop apache-pig hdfs

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

使用猪拉丁选择计数明显

我需要这个猪脚本的帮助.我刚收到一条记录.我正在选择2列并在另一列上进行计数(不同),同时还使用where where子句来查找特定描述(desc).

这是我的猪我的sql我试图编码.

 /*
    For example in sql:
    select domain, count(distinct(segment)) as segment_cnt
    from table
    where desc='ABC123'
    group by domain
    order by segment_count desc;
    */

    A = LOAD 'myoutputfile' USING PigStorage('\u0005')
            AS (
                domain:chararray,
                segment:chararray,
                desc:chararray
                );
B = filter A by (desc=='ABC123');
C = foreach B generate domain, segment;
D = DISTINCT C;
E = group D all;
F = foreach E generate group, COUNT(D) as segment_cnt;
G = order F by segment_cnt DESC;
Run Code Online (Sandbox Code Playgroud)

hadoop apache-pig

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

如何通过运营商从Hive组获取数组/包元素?

我想按给定字段进行分组,并使用分组字段获取输出.以下是我想要实现的一个例子: -

想象一下名为'sample_table'的表,其中有两列如下: -

F1  F2
001 111
001 222
001 123
002 222
002 333
003 555
Run Code Online (Sandbox Code Playgroud)

我想编写Hive Query,它将提供以下输出: -

001 [111, 222, 123]
002 [222, 333]
003 [555]
Run Code Online (Sandbox Code Playgroud)

在猪中,这可以通过以下方式轻松实现: -

grouped_relation = GROUP sample_table BY F1;
Run Code Online (Sandbox Code Playgroud)

有人可以建议在Hive中有一个简单的方法吗?我能想到的是为此编写用户定义函数(UDF),但这可能是一个非常耗时的选项.

sql hadoop hive apache-pig bigdata

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

Apache PIG中是否有任何条件IF运算符?

实际上我正在编写PIG脚本,并且如果满足其中一个条件,则希望执行一些语句.

我设置了一个变量并检查该变量的某些值.假设

if flag==0 then
  A = LOAD 'file' using PigStorage() as (f1:int, ....);
  B = ...;
  C = ....;
else 
  again some Pig Latin statements
Run Code Online (Sandbox Code Playgroud)

我可以在PIG脚本中执行此操作吗?如果是,那我该怎么做?

谢谢.

hadoop apache-pig

16
推荐指数
3
解决办法
3万
查看次数

Apache Pig中的连接错误

我正在使用Hadoop 2.0.5运行Apache Pig .11.1.

我在Pig中运行的大多数简单工作都非常好.

但是,每当我尝试在大型数据集或LIMIT运算符上使用GROUP BY时,我都会收到以下连接错误:

2013-07-29 13:24:08,591 [main] INFO  org.apache.hadoop.mapred.ClientServiceDelegate - Application state is completed. FinalApplicationStatus=SUCCEEDED. Redirecting to job history server 
013-07-29 11:57:29,421 [main] INFO  org.apache.hadoop.ipc.Client - Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)

2013-07-29 11:57:30,421 [main] INFO  org.apache.hadoop.ipc.Client - Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)

2013-07-29 11:57:31,422 [main] INFO  org.apache.hadoop.ipc.Client - Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 2 time(s); …
Run Code Online (Sandbox Code Playgroud)

hadoop apache-pig

16
推荐指数
1
解决办法
9562
查看次数

标签 统计

apache-pig ×10

hadoop ×7

bigdata ×2

hdfs ×2

hive ×2

json ×1

map ×1

sql ×1

syntax ×1