草庐IT

hadoop - Pig Latin 中的聚合值

在Pig中执行多级过滤后,我得到以下结果-(2343433,Argentina,2015,Sci-Fi)(2343433,France,2015,Sci-Fi)(2343433,Germany,2015,Sci-Fi)(2343433,Netherlands,2015,Sci-Fi)(2343433,Argentina,2015,Drama)(2343433,France,2015,Drama)(2343433,Germany,2015,Drama)(2343433,Netherlands,2015,Drama)(2343433,Argentina,2015,Family)(23434

hadoop - 对 PIG Latin 中的记录进行分组和计数

我是PIGLatin的新手,我正在尝试解决以下问题找出每个区号都有电话号码的员工数。EMPIDADD_IDZIPSALPHONEDATAbcd411PbcDr6026495349246404111-432-419320150113Abcd874PbcDr3935318630729873100-432-916420150728Abcd197PbcDr4672530618531908113-432-419120150410Abcd160PbcDr7773833053361313105-432-246820151007Abcd327PbcDr1003495170339301109-432-9

hadoop - Pig Latin 中的 FOREACH 多个数据

我可以用PigLatin做这样的事情吗?data1=LOAD'hadoop/text1.txt'AS(line:chararray);data2=LOAD'hadoop/text2.txt'AS(line:chararray);mixed=FOREACHdata1,data2GENERATEdata1:line,data2:line; 最佳答案 一般来说,按照您的要求做是没有意义的,因为数据将由多个映射器加载,可能一次加载一行。不能保证相同的映射器会看到相应的行,也不能保证映射器知道他们正在读取哪个block的哪一行。正如Winni

python - 根据感兴趣的日期范围作为参数输入,限制在 Pig Latin 中加载日志文件

我在基于参数输入加载日志文件时遇到问题,想知道是否有人能够提供一些指导。有问题的日志是Omniture日志,存储在基于年月日的子目录中(例如/year=2013/month=02/day=14),文件名中带有日期戳。任何一天都可能存在多个日志,每个日志有数百MB。我有一个Pig脚本,它当前处理整个月的日志,并将月份和年份指定为脚本参数(例如/year=$year/month=$month/day=*)。它工作正常,我们对此非常满意。也就是说,我们想要切换到每周处理日志,这意味着之前的LOAD路径glob将不起作用(周可以包含几个月甚至几年)。为了解决这个问题,我有一个PythonUDF

hadoop - 如何在 Pig Latin 中生成大量数据的不同平均值?

我有一个大型出租列表数据集,我想根据卧室数量生成每个城市的平均价格。我有以下类型的行:{(city:'NewYork',num_bedrooms:1,price:1000.00),(城市:'纽约',卧室数:2,价格:2000.00),(city:'NewYork',num_bedrooms:1,price:2000.00),(城市:'芝加哥',卧室数:1,价格:4000.00),(城市:'芝加哥',卧室数:1,价格:1500.00)}使用Pig,我想获得以下格式的结果:{(city:'纽约',1:1500.00,2:2000.00),(城市:'芝加哥',1:2750.00)}或者,我也

hadoop - 使用 Pig Latin - Hadoop 将元组插入内袋

我正在尝试使用PigLatin创建以下格式的关系:userid,day,{(pid,fulldate,x,y),(pid,fulldate,x,y),...}关系描述:每个用户(userid)在每一天(day)购买了多个产品(pid)我正在将数据加载到:A=LOAD'**fromaHDFSURL**'AS(pid:chararray,userid:chararray,day:int,fulldate:chararray,x:chararray,y:chararray);B=GROUPABY(userid,day);DescribeB;B:{group:(userid:chararray

Hadoop Pig Latin,CONCAT 函数失败

我已经尝试了所有我能想到的排列,但我无法让CONCAT工作。当我尝试时:fake=loadCONCAT('foo','bar');我得到以下信息:2013-01-1712:41:44,443[main]错误org.apache.pig.tools.grunt.Grunt-错误1200:不匹配的输入“CONCAT”需要QUOTEDSTRING我试过双引号,我不希望它起作用,但确实没有;我试过了将参数传递给脚本并对它们使用CONCAT,我得到了同样的错误。为了激发这一点,我试图指定一个基本输出目录,该目录根据我想要的结果文件的位置与各种可能的子输出目录连接在一起。顺便说一句,我也试过:fa

hadoop - 如何记录我编写的 Pig Latin grunt shell 命令?

我是Pig和PigLatin的新手。我想记录我在交互式gruntshell中编写的命令,以便我可以拼凑工作的PigLatin脚本。这可能吗?是否有一个文件存储我编写的命令的历史记录,类似于我的“.bash_history”文件?我想访问“.grunt_history”,如果存在这样的东西,或者以某种方式打开记录到文件。 最佳答案 Pig历史文件位于~/.pig_history中。因此,如果您的用户家是/home/joe,则路径是/home/joe/.pig_history。但是,您需要注意定位用户主目录。您可以从/etc/passw

hadoop - 更改 pig latin 中列的数据类型

我和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列求和,但出现错误。我的想法是数据类型不适合求和。现在它

hadoop - PIG Latin 中 FLATTEN 运算符的用途是什么

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