草庐IT

hadoop - 如何规范化 apache pig 中的 map 元组?

我在pig脚本中有以下关系:my_relation:{entityId:chararray,attributeName:chararray,bytearray}(++JIYMIS2D,timeseries,([value#50.0,timestamp#1388675231000]))(++JRGOCZQD,timeseries,([value#50.0,timestamp#1388592317000],[value#25.0,timestamp#1388682237000]))(++GCYI1OO4,timeseries,())(++JYY0LOTU,timeseries,())byt

hadoop - PIG UDF 处理拆分成不同映射器的多行元组

我有一个文件,其中每个元组跨越多行,例如:STARTname:Jimphone:2128789283address:562ndstreet,NewYork,USAENDSTARTname:Tomphone:6308789283address:565thstreet,Chicago,13611,USAEND...以上是我文件中的2个元组。我编写了定义getNext()函数的UDF,该函数检查它是否开始,然后我将初始化我的元组;如果是END那么我将返回元组(来自字符串缓冲区);否则我只会将字符串添加到字符串缓冲区。它适用于小于HDFSblock大小64MB(在AmazonEMR上)的文件大

hadoop - 根据 pig 的字段比较元组

(ABC,****,tool1,12)(ABC,****,tool1,10)(ABC,****,tool1,13)(ABC,****,tool2,101)(ABC,****,tool3,11)以上是输入数据以下是我在pig中的数据集。Schemais:Username,ip,tool,duration我想添加相同工具的持续时间输出(ABC,****,tool1,35)(ABC,****,tool2,101)(ABC,****,tool3,11 最佳答案 对持续时间使用GROUPBY和SUM。A=LOAD'data.csv'USING

hadoop - Pig : How to send all Tuples to a UDF to be Processed without Grouping them? 或者如何在不分组的情况下将元组转换为包?

这就是我想要做的:A=LOAD'...'USINGPigStorage(',')AS(col1:int,col2:chararray);B=ORDERAbycol2;C=CUSTOM_UDF(A);CUSTOM_UDF遍历需要按顺序排列的元组。UDF会为每几个输入元组输出一个聚合元组;即,我不会以1:1的方式返回元组。本质上:publicclassCustomUdfextendsEvalFunc{publicTupleexec(Tupleinput)throwsIOException{AggregateaggregatedOutput=null;DataBagvalues=(DataB

hadoop - 从包中提取有序的元组值

在pig中,我将我的数据按摩成类似这样的东西:(a,{(b,c),(d,e),(f,g)})(h,{(i,j),(k,l)})其中第一项是组,包是与组相关的其他值。我想把它变成以下格式:(a,b,c,d,e,f,g)(h,i,j,k,l)我到了现在的位置grunt>j=foreachG{>>o=ordermyvarbysecond;>>generategroup,o.(first,second);>>};因此包中的元组当前是有序的。如果我执行类似mystuff=foreachjgenerategroup,flatten($1);的操作,我会将其全部展平并取消分组。这在pig中可行吗?如

java - 元组作为 Hadoop 映射器中的键

我需要使用2个元素的“元组”作为我的mapreduce作业中的键。即我希望我的maptask输出一对(first_key,second_key),value我尝试使用ArrayWritable,但在运行我的代码后出现错误,结果证明ArrayWritable不适合这样的任务,因为它不适合这样的任务't实现WritableComparable(无论它是什么意思),因此不能用作键。奇怪的是,我无法为我的问题找到任何“正确”的解决方案,该解决方案将100%有效且没有任何附加条件。有什么建议吗? 最佳答案 MapReduce作业中的任何键都必

hadoop - Pig 10.0 - 将元组分组并合并到 foreach 中

我正在使用Pig10.0。我想在foreach中合并包。假设我有以下visitors别名:(a,b,{1,2,3,4}),(a,d,{1,3,6}),(a,e,{7}),(z,b,{1,2,3})我想在第一个字段上对元组进行分组,并将包与一组语义合并以获得以下元组:({1,2,3,4,6,7},a,6)({1,2,3},z,3)第一个字段是具有集合语义的包的并集。元组的第二个字段是组字段。第三个字段是包中元素的数量。我围绕以下代码尝试了几种变体(将SetUnion替换为Group/Distinct等),但始终无法实现所需的行为:DEFINESetUniondatafu.pig.bags

hadoop - 在 Pig 中合并元组

我有两组元组,我想通过第一个元素将它们内部连接并将其他部分合并到一个元组中,想知道如何在Hadoop上的Pig中实现它?输入两个元组集,1,(1,2)2,(2,3)1,(b,c,b,c)2,(c,d,c,d)预期输出,1,(1,2,b,c,b,c)2,(2,3,c,d,c,d)提前致谢,林 最佳答案 一个值得深思的想法......输入:数据A:1(1,2)2(2,3)数据B:1(b,c,b,c)2(c,d,c,d)pig脚本:A=LOAD'dataA'USINGPigStorage('\t')AS(aid:long,atuple:t

hadoop - 在 Pig 中将一个元组拆分为多个元组

我喜欢从一个元组生成多个元组。我的意思是:我有包含以下数据的文件。>>catdataID|ColumnName1:Value1|ColumnName2:Value2所以我通过下面的命令加载它grunt>>A=load'$data'usingPigStorage('|');grunt>>dumpA;(ID,ColumnName1:Value1,ColumnName2:Value2)现在我想把这个元组拆分成两个元组。(ID,ColumnName1,Value1)(ID,ColumnName2,Value2)我可以将UDF与foreach一起使用并生成吗?像下面这样的东西?grunt>>fo

scala - 如何使用值降序排列我的 Spark 结果元组

我是spark和scala的新手。我需要按降序排列我的结果计数元组,例如(course,count)。我像下面这样valresults=ratings.countByValue()valsortedResults=results.toSeq.sortBy(_._2)但是还是不行。以上述方式,它将按计数升序对结果进行排序。但我需要按降序排列。谁能帮帮我。结果如下(History,12100),(Music,13200),(Drama,143000)但我需要像下面这样显示它(Drama,143000),(Music,13200),(History,12100)谢谢