pig
文章平均质量分 81
longshenlmj
这个作者很懒,什么都没留下…
展开
-
pig对应sql的基本命令
1.从文件导入数据1)Mysql (Mysql需要先创建表).CREATE TABLE TMP_TABLE(USER VARCHAR(32),AGEINT,IS_MALE BOOLEAN);CREATE TABLE TMP_TABLE_2(AGE INT,OPTIONSVARCHAR(50)); --用于JoinLOAD DATA LOCAL INFILE '/tmp/data转载 2013-01-07 18:13:53 · 2183 阅读 · 0 评论 -
pig的cogroup详解
COGROUP与join的区别:自己懒得写,摘自网络Join的操作结果是平面的(一组元组),而COGROUP的结果是有嵌套结构的。运行以下命令:r1 = cogroup r_student by classNo,r_teacher by classNo;dump r1;结果如下:(C01,{(C01,N0103,65),(C01,N0102,59),(C01,N01原创 2014-09-24 09:38:17 · 2813 阅读 · 0 评论 -
pig中distinct用法
Distinct 只能处理整个记录,不能是一个域。--distinct.pigdaily = load 'NYSE_daily' as (exchange:chararray, symbol:chararray);uniq = distinct daily;uniq是一个整体表。 “distinct forces a reduce phase. It does原创 2013-01-11 20:13:02 · 3093 阅读 · 1 评论 -
pig简单的代码实例:报表统计行业中的点击和曝光量
注意:pig中用run或者exec 运行脚本。除了cd和ls,其他命令不用。在本代码中用rm和mv命令做例子,容易出错。另外,pig只有在store或dump时候才会真正加载数据,否则,只是加载代码,不具体操作数据。所以在rm操作时必须注意该文件是否已经生成。如果rm的文件为生成,可以第三文件,进行mv改名操作SET job.name 'test_age_reporth_istor原创 2014-10-31 16:11:55 · 1677 阅读 · 0 评论 -
pig脚本的参数传入,多个参数传入
pig脚本里传入参数,命令如下pig -p year=2014 -f test_parm.pig也可以pig -f test_parm.pig -p year=2014-f后面必须紧跟脚本名称如果没有-f,则必须用pig -p year=2014 test_parm.pig其他格式都是错的。另外,-parm和-p相同,但我使用中,在shell原创 2014-09-24 18:09:42 · 4413 阅读 · 0 评论 -
pig的内置函数小总结(不全)
piggybank里面有很多函数,可以用register和define调用。也可以用java仿照piggybank自行开发。比如读sequence二进制文件,可以用piggybank里面函数SequenceFileLoader,也可以自行开发函数。--REGISTER piggybank.jar;REGISTER wizad-etl-udf-0.1.jar;--DEFINE原创 2014-11-05 15:08:19 · 4248 阅读 · 0 评论 -
pig的udf编写
http://www.cnblogs.com/anny-1980/p/3673569.htmlhttp://blog.csdn.net/ruishenh/article/details/12048067http://blog.csdn.net/ruishenh/article/details/12192391原创 2014-11-26 17:09:06 · 1030 阅读 · 0 评论 -
foreach 内嵌的使用
draft原创 2014-08-13 18:18:33 · 1658 阅读 · 0 评论 -
pig代码格式上小注意
1,%default file test.txt 中不要用引号,'' 和“”都不行。'file'不会被识别2,等号=两边要注意。前必须空,后可以不空。所以格式最好保持,等号两边都有空格。如A = load '$file' as (date, web, name, food);因为编译器确定表名,用空格切分,无空格不行,如C= cogroup A by $0, B by $1原创 2014-10-30 18:08:32 · 3002 阅读 · 0 评论 -
hadoop cdh5的pig隐式转化(int到betyarray)不行了
cdh3上,pig支持int到chararray的隐式转化,但到cdh5不行。pig code is as follows:%default Cleaned_Log /user/usergroup_mdmp/test/cleaned/2015-01-05/5/part-r-00000%default Industry_Path /user/usergroup_mdmp/test/r原创 2015-01-12 17:43:42 · 1110 阅读 · 0 评论 -
pig强制转换(字符到整数):首位0怎么处理,‘01’到1的转化,
pig支持的类型转换(cast)Pig Latin supports casts as shown in this table.from / tobagtuplemapintlongfloatdoublechararraybytearraybool原创 2014-12-09 15:13:14 · 3448 阅读 · 0 评论 -
pig的一些实例(我常用的语法)
1:加载名用正则表达式:LOAD '/user/wizad/data/wizad/raw/2014-0{6,7-0,7-1,7-2,7-3,8}*/3_1/adwords*'2:filter的几种简单用法:按值过滤FILTER clickDate_all BY log_type=='2';FILTER mapping_table BY mapping_ad_network_原创 2014-10-31 18:43:18 · 2952 阅读 · 0 评论 -
pig 的chararry类型不能用比较运算符comparison operator
pig 的chararry类型可能是按字段,逐个字段进行比较。element_id 是chararray类型,语句:no_app_category_mapping = filter no_element_id by element_id == '' or element_id is null or element_id == '0' or element_id >='14'原创 2014-11-14 14:22:57 · 2311 阅读 · 0 评论 -
pig对null的处理(实际,对空文本处理为两种取值null或‘’)
pig对文本null的处理很特殊。会处理成两种null,还会处理成''这种空值。比如,读name,age,sex日志信息。name取值处理,如果记录为“,,,”这样,会将name取值为null,如果记录为“,19,男”则name会处理为''。同样是空值,pig读取后的取值却不一样。所以一定要小心。pig读取日志信息,遇到取值为空的字段会处理为两种,一种取值为'',另一种为null。原创 2014-11-13 15:58:03 · 3378 阅读 · 0 评论 -
pig函数以及关键字 的一些实例应用的总结(来自pig笔记)
http://wenku.baidu.com/link?url=yb7KnpSj9nHxWk_MsEVUezvB24evRf9wR87FX0dTT77pGXNXi6k3o_kTmAkBrpIHTqo66cr8P5cGOdHJKzqFsWFVt6xgvzWs5cxWKfcs6ee这里面总结的挺全面,尤其最后的一些小例子,很使用。我都写过,不过还是借鉴一下比较好pig的计算函数,过转载 2014-11-13 17:46:46 · 1528 阅读 · 0 评论 -
pig中对元组不能直接使用聚集函数(如COUNT)
pig中想要使用统计等aggregate函数,必须先group,再进行。而如何设计group也就成了一个相对麻烦的过程,这给程序设计造成了不小的麻烦。所以pig很强大,但其语法还是有些晦涩,存在很大进步空间。pig和sql不同,在sql中,可以直接对当前表使用aggregate函数,如count,进行统计计算。而在pig中,必须是先group后,实现了聚集后,再使用相关的aggrega原创 2013-01-08 16:43:50 · 1535 阅读 · 0 评论 -
pig中将两列合并为一列:concat
aggregate=congregate 在新任务中,需要统计两个属性组成的集合,对应有多少个unique 元组。在pig中统计是很恶心的事,必须先group (详见http://blog.csdn.net/longshenlmj/article/details/8481932)我想通过cogroup做,发现不合适。于是还是用group 做:T=group table by (原创 2013-01-08 16:53:24 · 3256 阅读 · 0 评论 -
vim中设置pig高亮
http://www.vim.org/scripts/script.php?script_id=2186中有详细介绍。两步操作install details1) copy pig.vim file into your ~/.vim/syntax/ directory; 2) add the following three lines to your ~/原创 2013-01-16 14:26:46 · 2839 阅读 · 0 评论 -
pig基础知识总结
Pig Latin UDF语句REGISTER 在Pig运行时环境中注册一个JAR文件DEFINE 为UDF、流式脚本或命令规范新建别名 Pig Latin命令类型kill 中止某个MapReduce任务exec 在一个新的Grunt shell程序中以批处理模式运行一个脚本run 在当前Grunt外壳程序中运行程序quit 退出解释器原创 2014-08-12 17:28:18 · 3374 阅读 · 0 评论 -
pig读取部分列 (全部列中的少部分列)
pig流式数据,load数据时,不能读入任意列。但是,可以从头读,只能连续几列。就是前几列。比如10列数据,可以只读前3列。但不能读第3列:如:数据testdata[wizad@sr104 lmj]$ cat testdata.txt 1,2,3,4,5,6,7,8,9,101,2,3,4,5,6,7,8,9,101,2,3,4,5,6,7,8,9,101,2,3,4,原创 2014-08-22 18:13:58 · 2501 阅读 · 0 评论 -
pig的limit无效(返回所有记录)sample有效
pig中,limit可以取样少部分数据,但有很多问题,比如数据不能少于10条,否则返回全部。今天又遇到另一个问题:group后的数据,limit无效:也就是group后的数据,不能用limit,估计是含group结构不行(没验证)相比而言sample比较好,我试了一下是可以的,对group后的数据也能有作用测试代码如下:origin_cleaned_data =原创 2014-09-22 17:08:26 · 1457 阅读 · 0 评论 -
pig运行方法:本地与云上
键入pig,直接进去grunt运行。(或者外部用pig)这原创 2014-08-28 15:32:59 · 1446 阅读 · 0 评论 -
pig limit 少于10行,会返回所有记录
my = limit g_log 3;STORE my INTO '/user/wizad/tmp/my' USING PigStorage(',');这样会返回原创 2014-09-02 16:53:03 · 1084 阅读 · 0 评论 -
pig的grunt中shell命令不稳定,能不用尽量不用
shell命令:mv a b 将文件a改名为b,可如果b已经存在,比如/test文件下有a和b两个文件,执行mv a b后,b被覆盖的了。也就是/test文件下只有a。但是mv命令在pig的grunt中使用有问题,执行不稳定。pig编程指南中说,除了cd和pwd两个命令,其他命令不推荐使用。在我测试后,确实如此,如果存在b文件,那么mv a b可能不被执行。但是可以先rm原创 2014-09-25 18:07:23 · 1545 阅读 · 0 评论 -
pig中查询top k,返回每个hour和ad_network_id下最大两个记录(SUBSTRING,order,COUNT_STAR,limit)
pig里面是有TOP函数,不知道为什么用不了。有时间要去看看pig源码了。SET job.name 'top_k';SET job.priority HIGH;--REGISTER piggybank.jar;REGISTER wizad-etl-udf-0.1.jar;--DEFINE SequenceFileLoader org.apache.pig.p原创 2014-11-10 17:18:02 · 1869 阅读 · 0 评论 -
pig加载两个不同字段个数的文件?load file with different items(f1有42列,f2有43列读到一个对象中)
我文章提到,加载一个文件的部分列是可行。两列,你只读一列,没问题。但是,两个文件,f1和f2,f1有42列,f2有43列,同时加载到一个流对象,如何?答:成功加载。但是无结构,discribe后看到:Schema for origin_cleaned_data unknown。这种情况类似merge,合并两个不同列的对象,会生成一个未知模式对象。背景:因为老日志42列,新日志多原创 2014-10-24 17:23:33 · 1860 阅读 · 0 评论 -
pig里面没有if:不能判断一个条件后决定一个执行步骤
pig是处理流 的工具,所以数据集是流对象,处理步骤也是一样的。 Pig中存在按条件处理流对象的方式有1)filterX= FILTER A BY (f1 == 8); 2)CASE WHEN THEN ELSE END CASE expression [ WHEN value THEN value ]+ [ELSE value ]? END 3)B原创 2015-05-06 15:53:49 · 2702 阅读 · 0 评论