草庐IT

pig4cloud

全部标签

hadoop - 如何在另一个 pig 脚本中调用 pig 脚本

我在hdfs中有一个包含100列的文件,我想使用pig对其进行处理。我想将这个文件加载到一个元组中,在一个单独的pig脚本中包含列名,并从其他pig脚本中重用这个脚本。我该怎么做?假设这个100列的pig脚本是-100col.pig。我如何从anotherone.pig调用它? 最佳答案 检查exec命令(用于批处理)或run命令(用于交互式脚本)。此外,如果您需要使用(非grunt)shell命令,请检查fs命令。这是一个很好的引用:http://pig.apache.org/docs/r0.7.0/piglatin_ref2.h

hadoop - 在 Pig 中删除单列

我正在按包含大约20个ID的列表过滤表格。现在我的代码如下所示:A=LOAD'ids.txt'USINGPigStorage();B=LOAD'massive_table'USINGPigStorage();C=JOINABY$0,BBY$0;D=FOREACHCGENERATE$1,$2,$3,$4,...STOREDINTO'foo'USINGPigStorage();我不喜欢的是D行,我必须在其中重新生成一个新表以通过显式声明我想要显示的每个其他列(有时是很多列)来摆脱连接列。我想知道是否有等同于:FILTERBBY$0IN(A)或:DROP$0FROMC

java - 在哪里可以看到从 hadoop pig 语句生成的 mapreduce 代码

我们都知道hadooppig语句被转换成javamapreduce代码。我想知道有什么方法可以查看从pig语句生成的mapreduce代码? 最佳答案 Weallknowthathadooppigstatementsareconvertedintojavamapreducecode事实并非如此。HadoopPig语句未转换为JavaMapReduce代码。更好的思考方式是Pig代码在运行于JavaMapReduce的Pig解释器中“解释”。这样想:Python和Perl不“生成”C代码,它们通过执行指令的C程序(解释器)来运行。基本

database - hadoop pig 返回前 5 行

我想返回一组的前5行。基本上我有一个表格,其中包含一些州名及其按州名分组的城市。我想要该州排名前5位的城市,而不是全部。我如何使用pig来做到这一点?提前谢谢你。 最佳答案 在GROUPBY之后,在FOREACH中...您可以先执行ORDERBY,然后是LIMIT。这将首先按城市大小对每个组中的事物进行排序,然后拉出前5名。B=GROUPABYstate;C=FOREACHB{DA=ORDERABYcitysizeDESC;DB=LIMITDA5;GENERATEFLATTEN(group),FLATTEN(DB.citysize)

hadoop - 如何在 pig 中生成行号?

我在用pig做数据准备,遇到了一个看似简单却无法解决的问题:比如我有一列名字name------AliciaAnaBenitaBertaBertha那我如何为每个名字添加一个行号呢?结果会是这样的:name|id----------------Alicia|1Ana|2Benita|3Berta|4Bertha|5感谢您阅读这个问题! 最佳答案 当您问这个问题时,Pig没有执行此操作的机制。但是,Pig0.11引入了一个RANKoperator可用于此目的。 关于hadoop-如何在pi

hadoop - Pig 过滤掉不匹配项

我有一堆具有各种前缀的字符串,包括“未知:”我真的很想在我的Pig脚本中过滤掉所有以“未知:”开头的字符串,但它似乎不起作用。simpleFilter=FILTERrecordsBYNOT(mystrMATCHES'^unknown');我已经尝试了正则表达式的一些其他排列,但似乎MATCHES不能很好地与NOT一起工作。我错过了什么吗?使用Pig0.9.2 最佳答案 这是因为matches运算符的操作与Java的String#matches完全相同,即它试图匹配整个String而不仅仅是它的一部分(你的例子中的前缀).只需更新您的

hadoop - 在 Elastic Map Reduce 上将分布式缓存与 Pig 结合使用

我正在尝试在Amazon的ElasticMapReduce上运行我的Pig脚本(使用UDF)。我需要在我的UDF中使用一些静态文件。我在我的UDF中做了这样的事情:publicclassMyUDFextendsEvalFunc{publicDataBagexec(Tupleinput){...FileReaderfr=newFileReader("./myfile.txt");...}publicListgetCacheFiles(){Listlist=newArrayList(1);list.add("s3://path/to/myfile.txt#myfile.txt");retu

hadoop - 将 Pig 与 Hadoop 一起使用时出现 "Failed to create DataStorage"错误

我一直在尝试让Pig0.9.0使用ApacheHadoop0.20.203.0运行。我在谷歌和邮件列表中查看了高低,甚至这个问题:cantrunpigwithsinglenodehadoopserver,但我仍然无法让PigshellGrunt在集群设置中运行(当然,我可以在本地模式下正常运行提示符)。我已经尝试了给出的解决方案-在没有hadoop的情况下重新编译,将hadoop库和pig-withouthadoop.jar添加到我的PIG_CLASSPATH变量中......没有任何效果。我刚得到错误2011-08-0210:56:00,709[main]ERRORorg.apach

hadoop - pig 与大表倾斜连接导致 "Split metadata size exceeded 10000000"

我们在一个小的(16M行)不同表和一个大的(6B行)倾斜表之间有一个pig连接。常规连接在2小时内完成(经过一些调整)。我们尝试使用skewed并能够将性能提高到20分钟。但是,当我们尝试更大的倾斜表(19B行)时,我们从SAMPLER作业中得到这条消息:Splitmetadatasizeexceeded10000000.Abortingjobjob_201305151351_21573[ScriptRunner]atorg.apache.hadoop.mapreduce.split.SplitMetaInfoReader.readSplitMetaInfo(SplitMetaInfo

hadoop - 如何使用 pig latin "update"列

假设我有下表:A:{x:int,y:int,z:int,...99othercolumns...}我现在想对此进行转换,以便将z设置为NULL,其中x>y,并存储生成的数据集作为B。而且我想这样做而不必明确提及所有其他列,因为这会成为维护的噩梦。有没有简单的解决办法? 最佳答案 此JIRA中跟踪了此问题:PIG-1693foreach中需要有一种方法来指示“以及所有其他字段”目前,我不知道有什么比按您说的做或不加载Z并使用starexpression添加新列Z更简单的了。. 关于hado