我是pig的新手,我编写了以下pig脚本:DEFINEformat`format_text.py$EMOJI$ACRONYM`SHIP('$STREAM_FILE_PATH/format_text.py');DEFINEparse`parse.sh`SHIP('$STREAM_FILE_PATH_SYNTAXNET/parse.sh');DEFINEprocess_roots`process_roots.py`SHIP('$STREAM_FILE_PATH_SYNTAXNET/process_roots.py');input_data=LOAD'$DATA_INPUT';result1
我在PIG中的数据列名为关键字、campaign_id、日期、时间、display_site、was_clicked、cpc、国家/地区、展示位置我想做的是找到点击率高的关键字。所以,我试图理解为什么下面的代码会给我无效的标量投影错误grouped=GROUPdataBYkeyword;by_keyword=FOREACHgrouped{clicked=FILTERdataBYwas_clicked==1;total=COUNT(data.keyword);GENERATEgroup,((double)COUNT(clicked)/total)ASctr;}我得到的错误:37,632[
如何获取ApachePig中特定记录(元组)的内存大小?有什么功能可以帮助我们实现这一目标吗? 最佳答案 是的,您可以尝试使用内置UDFSIZE。http://pig.apache.org/docs/r0.11.1/api/org/apache/pig/builtin/SIZE.html所以如果你想计算整个元组的大小,你可能需要先将所有元组字段转换为bytearray,然后对每个字段使用SIZE,并将所有字段精细地汇总在一起以获得元组以字节为单位的大小。显然,您可以将其转换为KB。 关于
所以我使用以下文件作为输入:https://svn.apache.org/repos/asf/pig/trunk/tutorial/data/excite-small.log我现在的代码是--FileName:excite-small.loglog=LOAD'excite-small.log'AS(user,timestamp,query);grpd=GROUPlogBYuser;cntd=FOREACHgrpdGENERATEgroup,COUNT(log);STOREcntdINTO'output'我使用http://docs.aws.amazon.com/ElasticMapRe
在Pig中,给定以下Bag:(A,B,C),我能否以某种方式计算所有值的唯一组合?我正在寻找的结果类似于(AB,AC,BC)。我忽略了BA、CA、CB,因为如果按字母顺序排序,它们将成为现有值的副本。 最佳答案 做这样的事情的唯一方法是编写一个UDF。这将完全按照您的要求进行:publicclassCombinationsUDFextendsEvalFunc{publicDataBagexec(Tupleinput)throwsIOException{ListbagValues=newArrayList();Iteratoriter
我想知道谁在每个部门领取最高薪水-我正在获得每个部门的最高薪水,但无法获得其中的名字....使用pig脚本附加文件EmpData=LOAD'/data/EmpDet3.csv'usingPigStorage(',')as(fname:chararray,lname:chararray,position:chararray,dept:chararray,salary:chararray);Grp_Dept=GROUPEmpDatabydept;EmpDataC=FOREACHEmpDataGENERATEfname,lname,position,dept,(int)SUBSTRING(s
作为启动产品的一部分,我们需要计算“相似用户特征”。我们决定选择pig。我已经学习pig几天了,了解它是如何工作的。所以从这里开始是日志文件的样子。userurltimeuser1http://someurl.com1235416user1http://anotherlik.com1255330user2http://someurl.com1705012user3http://something.com1705042user3http://someurl.com1705042由于用户和url的数量可能很大,我们不能在这里使用暴力破解方法,所以首先我们需要找到至少可以访问公共(publi
我需要在Hadoop中顺序运行一些Pig脚本。它们必须单独运行。有什么建议吗?更新只是一个快速更新,我们正在努力从一个Java类运行Pig脚本。Oozie是评论中提到的一种可能性(尽管对我们的需求来说太重了)。我还听说可以在Cascading(http://www.cascading.org/)中将Pig脚本编排为更大工作流程的一部分,并对此进行了一些研究。 最佳答案 对于一个简单的任务序列,我想orangeoctopus建议的可能就足够了。如果您想将更复杂的pig和/或普通MapReduce工作流组合在一起,您可能应该看看Oozi
我是Pig-Latin的初学者,我发现了一个关于FILTER语句的问题。看例子:假设我们有一个数据文件(test.txt),其内容是:1,2,32,3,43,4,54,5,6我想选择第一个字段为“3”的记录。Pig脚本是:t=LOAD'test.txt'USINGPigStorage(',');t1=FOREACHtGENERATE$0ASi0:chararray,$1ASi1:chararray,$2ASi2:chararray;f1=FILTERt1BYi0=='3';DUMPf1任务运行良好,但输出结果为空。EXPLAINf1显示:#-----------------------
如果我有以下数据集:c1c2------15151629293132我想为第一列(c1)中的每个值返回第二列(c2)中出现频率最高的值。所以我希望返回的数据集看起来像下面这样,因为对于c1=1,值“5”出现两次,值“6”只出现一次,对于c1=2,值“9”出现两次,没有出现其他值:152931我遇到问题的情况是出现次数相等(在本例中c1=3。)在情况(c1=3)中c2中出现次数相等的情况下,我只想返回第一次出现。任何想法都会有所帮助。 最佳答案 假设你的c1和c2在A上:B=GROUPABY(c1,c2)C=FOREACHBGENER