草庐IT

Pig-Latin

全部标签

hadoop - Pig CROSS 与复制的 JOIN

我需要在Pig中进行非等值连接。我首先要尝试的是CROSS+filter:together=CROSSA,B;filtered=FILTERtogetherBY(JOINPREDICATE);但是,其中一个关系肯定小到可以放入内存。这让我想知道CROSS在Pig中是如何实际实现的。它可以进行“复制”交叉吗?如果没有,我可以这样做:small=FOREACHsmallGENERATE*,1ASkey:int;large=FOREACHlargeGENERATE*,1ASkey:int;together=JOINlargeBYkey,smallBYkeyUSING'replicated';

java - Pig JVM java堆空间错误

我正在尝试运行一个pig脚本,该脚本调用用java编写的用户定义函数。我正在尝试使用264字节的非常小的文件测试此脚本。我最终遇到了Java堆空间错误并且作业失败了。我尝试使用-Xms1024M选项运行该作业,它运行较小的文件,但运行较大的文件失败。即便如此,我的集群也足够强大,不会被这么小的文件绊倒,我想知道我该如何修复这个内存泄漏。有人可以帮忙吗,importjava.util.HashMap;importjava.lang.annotation.Annotation;importjava.lang.reflect.Array;importjava.lang.reflect.Met

hadoop - 在 Pig 中合并两个数据集

我有一个pig脚本,我在其中加载一个数据集,将其分成两个单独的数据集,然后执行一些计算,最后向其中添加另一个计算字段。现在我想加入这两个数据集。A=LOAD'/user/hdfs/file1'AS(a:int,b:int);A1=FILTERABYa>100;A2=FILTERABYa100;--NowIdosomecalculationonA1andA2所以基本上,在计算之后,这里是两者的模式:{A1:{a:int,b:int,type:chararray}}{A2:{a:int,b:int,type:chararray}}现在,在我将其转储回HDFS之前,我想将这两个数据集合并回去

hadoop - pig 如何为列分配名称?

我有一个包含数百列的csv文件,当我将文件加载到Pig中时,我不想像这样分配每一列A=load'path/to/file'as(a,b,c,d,e......)因为我会在第二步过滤掉很多:B=foreachAgenerate$0,$2,....;但是在这里,我可以为B的每一列分配一个名称和类型吗?像B=foreachAgenerate$0,$2,...AS(a:int,b:int,c:float)我试过上面的代码,但它不起作用。谢谢。 最佳答案 您必须在每个逗号之间指定它们。B=foreachA生成$0作为a,$2作为b,...请注

hadoop - 从其他 Pig 脚本调用 Pig Latin 脚本

我有一个关于PIGLatin的问题。有什么方法可以从另一个pig脚本调用一些pig脚本吗?我知道可以运行用户定义函数(UDF),例如:REGISTERmyudfs.jar;A=LOAD'student_data'AS(name:chararray,age:int,gpa:float);B=FOREACHAGENERATEmyudfs.UPPER(name);DUMPB;但它不适用于pig脚本。我们正在计算一些不同的客户参数,为了可读性和重用性,最好加载一些pig片段,例如:REGISTERsomepigscript.pig;LOADsomepigscript.pig;你知道有没有这样的

hadoop - pig : Invalid field Projection; Projected Field does not exist

describefilter_records;这给了我以下格式:filter_records:{details1:(firstname:chararray,lastname:chararray,age:int,gender:chararray),details2:(firstname:chararray,lastname:chararray,age:int,gender:chararray)}我想显示details1和details2中的firstname。我试过这个:display_records=FOREACHfilter_recordsGENERATEdisplay1.first

hadoop - 为本地执行微调 PIG

我正在使用PIGlatin进行日志处理,因为它在数据不够大而不必担心设置整个hadoop集群的问题中表现力很强。我在本地模式下运行PIG,但我认为它没有使用它可用的所有内核(目前为16个),监控CPU显示CPU使用率最大为200%。是否有针对本地执行微调PIG的教程或建议?我确信所有的映射器都可以通过一些简单的调整来使用所有可用的内核。(在我的脚本中我已经将default_parallel参数设置为20)最好的问候。 最佳答案 Pig'sdocumentation清楚地表明本地操作旨在单线程运行,为某些函数采用不同的代码路径,否则将

java - Cassandra 和 Pig 集成 - hadoop 是可选的吗?

我正在尝试设置一个试用cassandra+pig集群。cassandrawiki听起来好像您需要hadoop才能与pig集成。但是cassandra-src/contrib/pig中的自述文件听起来好像您可以在没有hadoop的情况下在cassandra上运行pig。如果hadoop是可选的,不使用它会损失什么? 最佳答案 Hadoop仅在您进行测试时才可选。为了以任何规模做任何事情,您还需要hadoop。在没有hadoop的情况下运行意味着您在本地模式下运行pig。这基本上意味着所有数据都由您正在运行的同一个pig进程处理。这适用

join - 记录主动溢出到 Hadoop Pig 中?

我是Hadoop的新手,对我的pig脚本中的命令行消息很好奇。Totalrecordswritten:7676Totalbyteswritten:341396SpillableMemoryManagerspillcount:103Totalbagsproactivelyspilled:39Totalrecordsproactivelyspilled:32389322最终结果显示为“成功!”。我还是不确定。上面这些数字是什么意思?谢谢。 最佳答案 前两个显示了您的MR作业写入HDFS的总记录数/字节数。可能会发生,在MR作业期间,并非

hadoop - 将 pig 结果存储到本地文件

我运行pig脚本做了一些夸张的操作,输出大小非常小。现在我跑hadoopfs-getmerge...分开。有什么办法可以让pig脚本直接把结果转存到本地文件吗? 最佳答案 如果您不担心将所有内容合并到一个文件中,那么您可以在grunt(http://wiki.apache.org/pig/Grunt)中使用copyToLocal命令:grunt>copyToLocal 关于hadoop-将pig结果存储到本地文件,我们在StackOverflow上找到一个类似的问题: