我正在尝试将一袋元组转换为单个元组:grunt>describeB;B:{Comment:{tuple_of_tokens:(token:chararray)}}grunt>dumpB;({(10),(123),(1234)})我想从B得到(10,123,1234)。我试过使用FLATTEN但这为包中的每个元组提供了一个新行,这不是我想要的。有没有办法在不使用UDF的情况下进行这种转换?提前致谢! 最佳答案 BagToTuple()函数在piggybank中已经可用,您只需下载pig-0.11.0.jar并将其设置在您的类路径中。为
我正处于学习Pig/PigLatin的早期阶段,所以请原谅我缺乏知识。如果我们有一个格式如下的数据集:fname,lname,month,pay,emp_categoryBob,Smith,2000年1月,非经理Bob,Smith,2000年2月,非经理John,Doe,January,4500,经理John,Doe,February,4500,manager我看到我将如何计算每个员工的总工资,如果我想创建一个数据集,该数据集还从每个员工的总工资中减去每个员工的总工资:Bob,Smith4000,非经理,JohnDoe,9000,经理,5000使用SQL我可能只创建两个临时表:SELE
在我的Pig脚本中,有一个中间步骤,我想将生成的服务器主机名映射到应用程序名称。我有一个使用此映射从数据库创建的文本文件(~10k条记录)。但我不确定如何将此文本文件分发到pig中并在运行时访问它们。请帮助..!! 最佳答案 这是使用Pig的fragment-replicatejoin的完美用例算法。您只需将查找表加载为Pig关系并将其与您的实际数据结合起来。A=LOAD'data1'USING...AS...;B=LOAD'lookuptable'USING...AS...;C=JOINABYjoin_key,BBYjoin_ke
这是我要运行的行counts=FOREACHz{sum=SUM(B::counter);GENERATEgroupasA::month,sum;};但是我收到以下错误:Invalidfieldprojection.Projectedfield[B::counter]doesnotexistinschema:group:chararray,y:bag{:tuple(A::id:chararray,A::month:chararray,B::counter:int)}.如何对这样一个包含基于一列分组的元组包的模式进行求和聚合? 最佳答案
这是我正在处理的示例数据:PeterWilkerson27MJamesOwen26MMattWo30MKennyChen28M我创建了一个简单的UDF来像这样过滤年龄:publicclassIsApplicableextendsFilterFunc{@OverridepublicBooleanexec(Tupletuple)throwsIOException{if(tuple==null||tuple.size()>0){returnfalse;}try{Objectobject=tuple.get(0);if(object==null){returnfalse;}intage=(In
我如何在PIG中连接一个变量和一些硬编码值A=LOAD'data'as(f1:chararray,f2:chararray,f3:chararray);X=FOREACHAGENERATECONCAT("BIG",f3);预期输出:(Apache,开放,大源)(hadoop,map,BIGreduce)(pig,pig,BIGlatin) 最佳答案 Pig不支持双引号,因此您需要将硬编码值从双引号更改为单引号。X=FOREACHAGENERATEf1,f2,CONCAT('BIG',f3);更新:您可以使用REPLACE函数从输入中
通常,如果我们在一行中有任何分隔符,我们会这样做。load"pigtest.txt"usingPigStorage(',')as(year:int,temp:float);下面是单行数据的示例。0029029070999991901010106004+64333+023450FM12+000599999V0202701N015919999999N0000001N9-00781+99999102001ADDGF108991999999999999999999我需要提取年份1901(16thpositionto4positions)吨emperature(89thpositionto4po
我正在尝试从文件中删除双引号(")。某些字段包含“Newyork,NY”等数据。请告诉我该怎么做?我已尝试从CSV中删除(")。但它是没有发生。逐步代码如下:我是用pig-xlocal打开pig第一步:test4=LOAD'/home/hduser/Desktop/flight_data.csv'usingPigStorage(',')AS(YEAR:chararray,QUARTER:chararray,MONTH:chararray,DAY_OF_MONTH:chararray,DAY_OF_WEEK:chararray,FL_DATE:chararray,UNIQUE_CARRI
很多时候我们有兴趣获取一组的顶部或底部(在orderby之后),这些集合在排序之前已经按某些键分组。A=FOREACHdataGENERATEx,y,z;B=DISTINCTA;C=GROUPBBY(x,y)PARALLEL11;D=FOREACHC{ORDERD=ORDERBBYzDESC;FIRST_REC=LIMITORDERD1;GENERATEFLATTEN(FIRST_REC)AS(x,y,z);};STOREDINTO'xyz'USINGPigStorage();上面的foreach生成需要“永远”完成,并最终在12小时左右后被杀死。负责这件事的mapreduce作业生成
我正在运行Cassandra,其中有大约2万条记录可供使用。我正尝试在pig中对此数据运行过滤器,但收到以下消息:2015-07-2313:02:23,559[Thread-4]WARNorg.apache.hadoop.mapred.LocalJobRunner-job_local_0001java.lang.RuntimeException:com.datastax.driver.core.exceptions.InvalidQueryException:Expected8or0bytelong(1)atorg.apache.pig.backend.hadoop.execution