我已经尝试了所有我能想到的排列,但我无法让CONCAT工作。当我尝试时:fake=loadCONCAT('foo','bar');我得到以下信息:2013-01-1712:41:44,443[main]错误org.apache.pig.tools.grunt.Grunt-错误1200:不匹配的输入“CONCAT”需要QUOTEDSTRING我试过双引号,我不希望它起作用,但确实没有;我试过了将参数传递给脚本并对它们使用CONCAT,我得到了同样的错误。为了激发这一点,我试图指定一个基本输出目录,该目录根据我想要的结果文件的位置与各种可能的子输出目录连接在一起。顺便说一句,我也试过:fa
我是Pig和PigLatin的新手。我想记录我在交互式gruntshell中编写的命令,以便我可以拼凑工作的PigLatin脚本。这可能吗?是否有一个文件存储我编写的命令的历史记录,类似于我的“.bash_history”文件?我想访问“.grunt_history”,如果存在这样的东西,或者以某种方式打开记录到文件。 最佳答案 Pig历史文件位于~/.pig_history中。因此,如果您的用户家是/home/joe,则路径是/home/joe/.pig_history。但是,您需要注意定位用户主目录。您可以从/etc/passw
我和pig拉丁语有关系。有很多列,所以我不想在加载关系时指定数据类型。有没有办法在事后改变它?batters=LOAD'hdfs:/home/ubuntu/pigtest/Batting.csv'usingPigStorage(',');filtered_batters=FOREACHbatters2GENERATE$0asid,$5asbats;describefiltered_batters;filtered_batters:{id:bytearray,bats:bytearray}我问的原因是因为我试图按id分组并对bats列求和,但出现错误。我的想法是数据类型不适合求和。现在它
A=将“数据”加载为(x,y);B=将“数据”加载为(x,z);C=cogroupAbyx,Bbyx;D=foreachC生成flatten(A),flatten(b);E=A::x组D在上面的语句中到底做了什么以及我们在实时场景中使用了展平的地方。 最佳答案 A=load'input1'USINGPigStorage(',')as(x,y);(x,y)-->(1,2)(1,3)(2,3)B=load'input2'USINGPigStorage(',')as(x,z);`(x,z)-->(1,4)(1,2)(3,2)*/C=cog
我有一个文件max_rank.txt包含:1,a2,b3,c和第二个文件max_rank_add.txt:def我的预期结果是:1,a2,b3,c,4,d,5,e6,f所以我想为第二组值生成RANK,但从大于第一组最大值的值开始。脚本的开头可能是这样的:existing=LOAD'max_rank.txt'usingPigStorage(',')AS(id:int,text:chararray);new=LOAD'max_rank_add.txt'usingPigStorage()AS(text2:chararray);ordered=ORDERexistingbyiddesc;lim
我对在工作中使用Pig还比较陌生。我有一个巨大的表(367万个条目),其中包含字段--id、feat1:value、feat2:value...featN:value。其中id是文本,feat_i是特征名称,value是给定id的特征i的值.每个元组的特征数量可能会有所不同,因为它是稀疏表示。例如这是数据中3行的示例id1f1:23f3:45f7:67id2f2:12f3:23f5:21id3f7:30f16:8f23:1现在的任务是对具有共同特征的查询进行分组。我应该能够获得那些具有任何功能重叠的查询集。我尝试了几件事。CROSS和JOINS造成数据爆炸,reducer卡住了。我不熟
ApachePigQuery执行需要多少时间?查询在PigLatin中获取多达400万个具有43个字段的元组(行)的记录。A=LOAD'/user/PigTest/year_14/mon_nov/6_sms_03_01.csv'USINGPigStorage(',');bt=foreachAgenerate$0asid,$3;dumpbt;ct=filterbtbyid==3981042;dumpct;dumpMinutesBetween(CurrentTime(),$ti);并将文件调用为:pig-paramti='date'try.pig我的系统环境是Linux。错误是:错误120
我试图在PigLatin中放置一个通用脚本,我需要根据最后一列过滤数据。我的数据集会有不同的列数,我将根据最后一列进行过滤。有什么方法可以获取Pig中的最后一列。master=LOAD'/user/data/usps/dataset_1/'usingPigStorage(',');B=FILTERmasterBYlast_columnisnull; 最佳答案 您不能使用pigstorage。但是您可以编写自己的自定义加载程序(说实话很容易)来解析数据并将最后一列命名为“last_column”
我的数据格式如下:student_id,course_id,grade,other_information。这适用于大量学生,比如数十亿。我编写了一个perl脚本来为学生处理数据。所以想到使用hadoop框架通过将每个学生的数据流式传输到perl脚本来加速这个过程。我是这样的:student_data=LOAD'source'usingPigStorage('\t')As(stud_id:string,...)grp_student=groupstudent_databystud_id;final_data=foreachgrp_student{flat_data=flatten(gr
很多时候我们有兴趣获取一组的顶部或底部(在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作业生成