草庐IT

hadoop - 在 Pig-Latin 中的 FOREACH 失败后使用 FILTER

我是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显示:#-----------------------

hadoop - 检索 PIG 中出现频率最高的值

如果我有以下数据集: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

hadoop - Pig DUMP 卡在 GROUP 中

我是PIG初学者(使用pig0.10.0),我有一些简单的JSON,如下所示:测试.json:{"from":"1234567890",....."profile":{"email":"me@domain.com".....}}我在pig身上进行了一些分组/计数:>pig-xlocal使用以下PIG脚本:REGISTER/pig-udfs/oink.jar;REGISTER/pig-udfs/json-simple-1.1.jar;REGISTER/pig-udfs/guava-12.0.jar;REGISTER/pig-udfs/elephant-bird-2.2.3.jar;use

hadoop - 如何在成功时保留 PIG 作业日志文件。

我注意到当运行PIG脚本时出现错误时,会生成并保存日志。但是当没有错误时,日志文件被删除。有没有办法在作业成功时保留日志文件? 最佳答案 默认情况下,错误(例如:脚本解析错误)记录到pig.logfile中,可以在$PIG_HOME/conf/pig.properties中设置。如果您还想记录状态消息,请准备一个有效的log4j.properties文件并将其设置在log4jconf属性中。例如:将$PIG_HOME/conf中的log4j.properties.template重命名为log4j.properties并设置以下内容

hadoop - pig : Perform task on completion of UDF

在Hadoop中,我有一个看起来像这样的Reducer,用于将数据从先前的映射器转换为一系列非InputFormat兼容类型的文件。protectedvoidsetup(Contextcontext){LocalDatabaseld=newLocalDatabase("localFilePath");}protectedvoidreduce(BytesWritablekey,Textvalue,Contextcontext){ld.addValue(key,value)}protectedvoidcleanup(Contextcontext){saveLocalDatabaseInHD

hadoop - Apache pig : Can we convert a custom Writable object to Pig format?

我们有一个自定义可写值对象的SequenceFile,该对象本质上等同于Pig中的复杂包数据类型。有没有一种方便的方法,我们可以编写自定义函数将hadoopWritable对象转换为bag数据类型,然后使用pig脚本对其进行处理? 最佳答案 一种选择是查看elephant-bird-如果你向下滚动这个github页面到README部分,它有一个关于Pig的部分:PigIncludesconverterinterfaceforturningTuplesintoWritablesandviceversa我从来没有用过它,我想你必须自己实

hadoop - pig : How to load the output of an hdfs ls into an alias?

我正在尝试查看我的hdfs中的文件并评估哪些文件早于特定日期。我想执行一个hdfsls并将它的输出传递给一个pigLOAD命令。在对HowCanILoadEveryFileInaFolderUsingPIG?的回答中@DonaldMiner包含一个输出文件名的shell脚本;我借用它来传递文件名列表。但是,我不想加载文件的内容,我只想加载ls命令的输出并将文件名视为文本。这是myfirstscript.pig:test=LOAD'$files'as(moddate:chararray,modtime:chararray,filename:chararray);illustratetes

hadoop - Pig - 如何迭代一袋 map

让我解释一下这个问题。我有这行代码:u=FOREACHpersonsGENERATEFLATTEN($0#'experiences')asj;dumpu;产生这个输出:([id#1,date_begin#122012,description#blabla,date_end#042013],[id#2,date_begin#022011,description#blabla2,date_end#042013])([id#1,date_begin#122011,description#blabla3,date_end#042012],[id#2,date_begin#022010,desc

hadoop - Pig 中 GROUP BY 中的条件过滤器

我有以下数据集,如果它们具有相同的键,我需要将其中的多行合并为一行。同时,我需要在分组的多个元组中进行选择。1N11101N12152N11103N11103N12154N21105N31105N3220例如A=LOAD'data.txt'AS(f1:int,f2:chararray,f3:int,f4:int);G=GROUPABY(f1,f2);DUMPG;((1,N1),{(1,N1,1,10),(1,N1,2,15)})((2,N1),{(2,N1,1,10)})((3,N1),{(3,N1,1,10),(3,N1,2,15)})((4,N2),{(4,N2,1,10)})((

hadoop - pig 根据另一列中的值添加列

我在元组中有一列名为avg_rating。我想根据avg_rating中的值创建一个新列NPS。这是avg_rating数据的样子avg_rating348910所以如果评分>=8那么Pr如果评级评级介于4和8NPS之间,则为P如果评分这是我正在尝试的,yy=FOREACHavg_ratingGENERATEavg_rating,((int)wtr>=8?'P':(int)wtr>=4&&(int)wtr我在车工运算符(operator)中使用多个条件,但出现错误Syntaxerror,unexpectedsymbolatornear'('知道这有什么问题吗?