标签: apache-pig

猪和蜂巢之间的区别?为什么两者都有?

我的背景 - 在Hadoop世界4周大.使用Cloudera的Hadoop VM在Hive,Pig和Hadoop中略微涉足.已阅读Google关于Map-Reduce和GFS的文章(PDF链接).

我明白那个-

  • Pig的语言Pig Latin是一种转变(适合程序员认为的方式)SQL就像声明式编程风格和Hive的查询语言非常类似于SQL.

  • 猪坐在Hadoop之上,原则上也可以坐在Dryad之上.我可能错了,但Hive与Hadoop紧密相关.

  • Pig Latin和Hive命令都编译为Map和Reduce作业.

我的问题 - 当一个人(比如猪)可以达到目的时,双方的目标是什么.是不是因为猪被雅虎传福音!和Facebook的蜂巢?

hadoop hive apache-pig

254
推荐指数
11
解决办法
21万
查看次数

何时使用Hadoop,HBase,Hive和Pig?

使用HadoopHBaseHive有什么好处?

根据我的理解,HBase避免使用map-reduce,并且在HDFS之上具有面向列的存储.HiveHadoopHBase的类似sql的接口.

我也想知道HivePig的比较.

hadoop hbase hive apache-pig

181
推荐指数
7
解决办法
13万
查看次数

PIG如何计算别名中的多个行

我做了类似这样的事情来计算PIG中别名的行数:

logs = LOAD 'log'
logs_w_one = foreach logs generate 1 as one;
logs_group = group logs_w_one all;
logs_count = foreach logs_group generate SUM(logs_w_one.one);
dump logs_count;
Run Code Online (Sandbox Code Playgroud)

这似乎效率太低.如果有更好的方法请赐教!

hadoop apache-pig

50
推荐指数
5
解决办法
10万
查看次数

Apache Pig:FLATTEN和reducers的并行执行

我已经实现了Apache Pig脚本.当我执行脚本时,它会为特定步骤生成许多映射器,但该步骤只有一个reducer.由于这种情况(许多映射器,一个减速器),Hadoop集群几乎处于空闲状态,而单个减速器执行时.为了更好地使用集群的资源,我希望还有许多并行运行的reducer.

即使我使用SET DEFAULT_PARALLEL命令在Pig脚本中设置并行性,我仍然只有1个reducer.

发出问题的代码部分如下:

SET DEFAULT_PARALLEL 5;
inputData = LOAD 'input_data.txt' AS (group_name:chararray, item:int);
inputDataGrouped = GROUP inputData BY (group_name);
-- The GeneratePairsUDF generates a bag containing pairs of integers, e.g. {(1, 5), (1, 8), ..., (8, 5)}
pairs = FOREACH inputDataGrouped GENERATE GeneratePairsUDF(inputData.item) AS pairs_bag;
pairsFlat = FOREACH pairs GENERATE FLATTEN(pairs_bag) AS (item1:int, item2:int);
Run Code Online (Sandbox Code Playgroud)

'inputData'和'inputDataGrouped'别名在映射器中计算.

减速器中的'pair'和'pairsFlat'.

如果我通过使用FLATTEN命令删除行来更改脚本(pairsFlat = FOREACH对GENERATE FLATTEN(pairs_bag)AS(item1:int,item2:int);)然后执行会产生5个reducers(因此在并行执行中) .

似乎FLATTEN命令是问题,并避免创建许多reducer.

我怎么能达到FLATTEN的相同结果,但是脚本是并行执行的(有很多减速器)?

编辑:

有两个FOREACH时的EXPLAIN计划(如上所述):

Map Plan
inputDataGrouped: Local Rearrange[tuple]{chararray}(false) - scope-32
|   |
|   Project[chararray][0] - scope-33 …
Run Code Online (Sandbox Code Playgroud)

hadoop apache-pig

35
推荐指数
1
解决办法
5594
查看次数

在Hadoop中将多个文件合并为一个文件

我将多个小文件放入我的输入目录,我希望将其合并到一个文件中,而不使用本地文件系统或编写mapred.有没有办法可以使用hadoof fs命令或猪?

谢谢!

hadoop apache-pig

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

Pig Latin:从日期范围加载多个文件(目录结构的一部分)

我有以下情况 -

猪版使用0.70

HDFS目录结构示例:

/user/training/test/20100810/<data files>
/user/training/test/20100811/<data files>
/user/training/test/20100812/<data files>
/user/training/test/20100813/<data files>
/user/training/test/20100814/<data files>
Run Code Online (Sandbox Code Playgroud)

正如您在上面列出的路径中看到的,其中一个目录名称是日期戳.

问题:我想从20100810到20100813之间的日期范围加载文件.

我可以将日期范围的'from'和'to'作为参数传递给Pig脚本,但是如何在LOAD语句中使用这些参数.我能够做到以下几点

temp = LOAD '/user/training/test/{20100810,20100811,20100812}' USING SomeLoader() AS (...);
Run Code Online (Sandbox Code Playgroud)

以下适用于hadoop:

hadoop fs -ls /user/training/test/{20100810..20100813}
Run Code Online (Sandbox Code Playgroud)

但是当我在猪脚本中尝试使用LOAD时它失败了.如何利用传递给Pig脚本的参数从日期范围加载数据?

错误日志如下:

Backend error message during job submission
-------------------------------------------
org.apache.pig.backend.executionengine.ExecException: ERROR 2118: Unable to create input splits for: hdfs://<ServerName>.com/user/training/test/{20100810..20100813}
        at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.getSplits(PigInputFormat.java:269)
        at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:858)
        at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:875)
        at org.apache.hadoop.mapred.JobClient.access$500(JobClient.java:170)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:793)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:752)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1062)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:752)
        at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:726)
        at org.apache.hadoop.mapred.jobcontrol.Job.submit(Job.java:378)
        at org.apache.hadoop.mapred.jobcontrol.JobControl.startReadyJobs(JobControl.java:247)
        at org.apache.hadoop.mapred.jobcontrol.JobControl.run(JobControl.java:279)
        at …
Run Code Online (Sandbox Code Playgroud)

hadoop apache-pig

29
推荐指数
4
解决办法
5万
查看次数

Hadoop Pig:传递命令行参数

有没有办法做到这一点?例如,传递要处理的文件的名称等?

hadoop apache-pig

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

如何从镶木地板文件中获取架构/列名称?

我有一个存储在HDFS中的文件 part-m-00000.gz.parquet

我试图运行,hdfs dfs -text dir/part-m-00000.gz.parquet但它已经压缩,所以我运行gunzip part-m-00000.gz.parquet但它没有解压缩文件,因为它无法识别.parquet扩展名.

如何获取此文件的架构/列名称?

hadoop apache-pig hdfs parquet

22
推荐指数
4
解决办法
4万
查看次数

如何在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 Latin中的两列上进行外连接

我像这样在Pig中的单列上进行外连接

result = JOIN A by id LEFT OUTER, B by id;
Run Code Online (Sandbox Code Playgroud)

我如何加入两列,如:

WHERE A.id=B.id AND A.name=B.name
Run Code Online (Sandbox Code Playgroud)

什么是猪的等价物?我在猪手册中找不到任何例子......有什么帮助吗?

hadoop apache-pig

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

标签 统计

apache-pig ×10

hadoop ×10

hive ×2

hbase ×1

hdfs ×1

map ×1

parquet ×1

syntax ×1