草庐IT

hadoop - PIG Latin 中的 JOIN 条件

SQLSELECTm.x,m.y,n.a,n.bfrommydata1m,mydata2nWHEREm.x=n.aANDm.y>=n.ypigA=LOAD'mydata1'AS(x:int,y:datetime);B=LOAD'mydata2'AS(a:int,b:datetime);我现在需要使用上述sql条件连接两个表。我将如何使用连接条件在PIG中实现上述逻辑? 最佳答案 试试这个:A=LOAD'mydata1'AS(x:int,y:datetime);B=LOAD'mydata2'AS(a:int,b:datetime);C

hadoop - 在 Apache Pig Latin 中转置数据

我需要“转置”如下所示的数据:idCity111Chicago111NewYork111LA222Paris222London222Tokyo到:111ChicagoNewYorkLA222ParisLondonTokyo每个id都有三个条目,因此生成的关系将有4个字段。我试图避免使用UDF。有任何想法吗? 最佳答案 这不是基本分组吗?B=GROUPABYid检查http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#GROUP 关于ha

hadoop - 在 Pig Latin 中将袋子变成数组

我正在对一些数据集进行一些转换,需要发布为一种看起来很正常的格式。当我运行describe时,当前我的最终设置看起来像这样:{memberId:long,companyIds:{(subsidiary:long)}}我需要它看起来像这样:{memberId:long,companyIds:[long]}companyIds是long类型ID数组的键?我真的在为如何以这种方式操纵事物而苦苦挣扎?有任何想法吗?我试过使用FLATTEN和其他命令来了解是否有用。我正在使用AvroStorage将文件写入此模式:我需要将此数据写入的字段架构如下所示:"fields":[{"name":"mem

hadoop - 处理 PIG Latin 中的重复记录

如果文件中有重复项,则第一个记录应转到有效文件,其余重复记录应使用PIG脚本移至无效文件。场景如下。Input:Acc|Phone|Name1234|333-444-5555|XYZ4567|222-555-1111|ABC1234|234-123-0000|DEF9999|123-456-1890|PQR8734|456-879-1234|QWE4567|369-258-0147|NNN1234|987-654-3210|BLSoutput:Twofiles1.Validrec:1234|333-444-5555|XYZ4567|222-555-1111|ABC9999|123-45

hadoop - Pig Latin 中的分组

在PigLatin中,我想按2次分组,以便选择具有2种不同规律的行。我无法解释这个问题,所以这里有一个例子。假设我想获取年龄与我最接近($my_age)并且有很多钱的人的规范。RelationAisfourcolumns,(name,address,zipcode,age,money)B=GROUPABY(address,zipcode);#groupbytheaddress--generatetheaddress,theperson'sage...C=FOREACHBGENERATEgroup,MIN($my_age-age)ASmin_age,FLATTEN(A);D=FILTER

hadoop - 如何使用 Pig Latin 从 AWS S3 加载数据

我要使用PigLatin检索根据日期保存和组织的CSV文件。我想自动执行此过程并获取昨天的数据。代码如下:tempdate=CurrentTime();--P1D=periodof1dayinISOformatyesterday=foreachtempdategenerateSubtractDuration(tempdate,P1D);$date=ToString(yesterday,"YYYY-MM-dd");data=load's3://folder/folder/$date'as(a:tuple());dumpdata;但我一直收到这个错误:[main]错误org.apache.

hadoop - Pig Latin - foreach generate 方法在没有第一个字段的情况下不起作用

我遇到了一个关于piggenerate函数的奇怪问题,如果我不使用第一个字段,生成的数据似乎是错误的。这是预期的行为吗?a=load'/input/temp2.txt'usingPigStorage('','-tagFile')as(fname:chararray,line:chararray);grunt>b=foreachagenerate$1;grunt>dumpb;(temp2.txt)(temp2.txt)grunt>c=foreachagenerate$0,$1;grunt>dumpc;(temp2.txt,field1,field2)(temp2.txt,field1,f

hadoop - PIG latin - DUMP 命令不显示

我只是尝试使用DUMP显示GROUPed记录的结果,但是没有显示数据,而是有很多日志数据。我只玩10条记录。详情:grunt>DUMPgrouped_records;2016-02-2117:34:24,338[main]INFOorg.apache.pig.tools.pigstats.ScriptState-Pigfeaturesusedinthescript:GROUP_BY,FILTER2016-02-2117:34:24,339[main]INFOorg.apache.pig.newplan.logical.optimizer.LogicalPlanOptimizer-{RU

java - 用 Pig Latin 每组写一个文件

问题:我有许多包含ApacheWeb服务器日志条目的文件。这些条目不按日期时间顺序排列,并且分散在文件中。我正在尝试使用Pig读取一天的文件,按日期时间对日志条目进行分组和排序,然后将它们写入以其包含的条目的日期和时间命名的文件。设置:导入文件后,我使用Regex获取日期字段,然后将其截断为小时。这会生成一个集合,其中一个字段中有记录,另一个字段中的日期被截断为小时。从这里开始,我在日期-小时字段上进行分组。第一次尝试:我的第一个想法是在使用FOREACH遍历我的组时使用STORE命令,但很快发现这对Pig来说并不酷。第二次尝试:我的第二次尝试是在piggybank中使用MultiSt

hadoop - 如何在 Pig Latin 中实现 Levenshtein 算法

我有两个数据集。A{(1,apple),(2,orange),(3,banana)}和B={(1,oracle),(2,ape),(3,naana),(4,orlando),(5,应用程序)(6,横幅)}我有一个udf,它在两个字符串之间给出Levenshtein分数。但是如何计算A中的每个字段与B中的所有字段以获得B中最匹配的字符串。例如,A中“apple”的Levenshtein得分对于app的得分高于B中的ape甲骨文在A中的Levenshtein得分比奥兰多在B中得分更高A中“banana”的Levenshtein得分更多的是naana而不是B中的banner。