在pig中, dump和store会分别完毕两个MR, 不会一起进行

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_id=='3' AND mapping_type=='5';

test =FILTER allRow BY (ad_id=='14997' OR ad_id=='14998' OR ad_id=='14999') AND log_type==2;

test=FILTER allRow BY (INDEXOF(ad_id,'14997')==0 OR INDEXOF(ad_id,'14998')==0 OR INDEXOF(ad_id,'14999')==0) AND log_type==2;

配合size函数

FILTER count_imei BY (SIZE(cimei)>14 AND SIZE(cimei)<17);

正則表達式

FILTER cimei2 BY NOT cimei MATCHES '^[0-9]*$';

FILTER cmac2 BY cmac MATCHES '/[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}/';

3:排序

ORDER province_count BY $2 DESC;





4:CONCAT函数的使用。可用于生成独立的一列,如count了的一个数,前面加一列名称

FOREACH origin_cleaned_data GENERATE CONCAT('<-_','->') AS cou,guid,log_type;

read_social_14 =FOREACH metadata_social_14 GENERATE CONCAT('14','=='),guid_social;

all_id =FOREACH allRow GENERATE id,CONCAT('_','-') as cc;

5:过滤空值,将空值改成取值unknown。

条件表达式“(推断式)?a:b”的应用:直接对列操作

origin_historical = FOREACH origin_cleaned_data GENERATE wizad_ad_id,guid,log_type,

((province_region_id == '') ? 'unknown' : province_region_id)



6:切分成不同子集,按值:

 SPLIT geelyTuiGuang INTO android IF os_id==1,ios IF os_id==2;

 SPLIT ios INTO ios6 IF (INDEXOF(os_version,'7')!=0),ios7 IF INDEXOF(os_version,'7')==0;

SPLIT allCleaned INTO log_42 IF (

((chararray)$34=='1' OR (chararray)$34=='2' OR (chararray)$34=='3' OR (chararray)$34=='1' OR (chararray)$34=='4')

AND

(INDEXOF((chararray)$35,'.')>0)

AND

((chararray)$36=='1' OR (chararray)$36=='')



),

log_43 IF (

((chararray)$34=='1' OR (chararray)$34=='2')

AND

((chararray)$35=='1' OR (chararray)$35=='2' OR (chararray)$35=='3' OR (chararray)$35=='1' OR (chararray)$35=='4')

AND

(INDEXOF((chararray)$36,'.')>0)

);

7:replace函数替换值

 FOREACH ios6 GENERATE imei,mac_address as cmac,REPLACE(idfa,'null','');



8:数据流过滤

en_guid =STREAM duimei THROUGH `awk -F"," '{if($3 == "null") print $1","$2","; else print $0}'`;

9:强制转换:

cleaned_data_42 =FOREACH log_42 GENERATE 

(chararray)$1  AS wizad_ad_id:chararray,

(chararray)$2  AS guid:chararray,

(chararray)$6  AS log_type:chararray,

(chararray)$18 AS imei:chararray,

(chararray)$22 AS idfa:chararray,

(chararray)$23 AS mac_address:chararray

10内置函数REGEX_EXTRACT,使用正則表達式:

allAdId =FOREACH allRow GENERATE REGEX_EXTRACT((chararray)$3,'(.*) (.*)',1) AS time,REGEX_EXTRACT((chararray)$0,'(.*)_(.*)',1) AS adn,$6 AS ad_id;



 allAdId =FOREACH allRow GENERATE REGEX_EXTRACT(create_time,'(.*) (.*)',1) AS time,ad_id;

pig中使用的一些实例语法的更多相关文章

  1. jQuery中index()方法用法实例

    本文实例讲述了jQuery中index()方法用法.分享给大家供大家参考.具体分析如下: 此方法可以搜索匹配元素,并返回元素的索引值.索引值是从0开始的. 语法结构一: 当此方法没有参数的时候,返回值 ...

  2. jQuery中on()方法用法实例

    这篇文章主要介绍了jQuery中on()方法用法,实例分析了on()方法的功能.定义及在匹配元素上绑定一个或者多个事件处理函数的使用技巧,需要的朋友可以参考下 本文实例讲述了jQuery中on()方法 ...

  3. 第8.12节 Python类中使用__dict__定义实例变量和方法

    上节介绍了使用实例的__dict__查看实例的自定义属性,其实还可以直接使用__dict__定义实例变量和实例方法. 一. 使用__dict__定义实例变量 语法: 对象名. dict[属性名] = ...

  4. 第8.28节 Python中使用__setattr__定义实例变量和实例方法

    一. 引言 根据前面章节介绍的内容,我们知道实例变量.实例方法的定义可以通过以下方法进行: 在类体中直接定义实例变量.实例方法: 在实例方法中定义实例变量.实例方法: 在类体外调用方使用赋值语句赋值定 ...

  5. Bash 4.4 中新增的 ${parameter@operator} 语法

    Bash 4.4 中新增了一种 ${...} 语法,长这样:${parameter@operator}.根据不同的 operator,它展开后的值可能是 parameter 这个参数的值经过某种转换后 ...

  6. Scala 深入浅出实战经典 第45讲: scala中context bounds代码实例

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  7. Spring中IoC的入门实例

    Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如 ...

  8. pig中变量

    pig中的变量都是找到$变量然后替换,有点像宏,完全就是替换,看如下例子 %default m 'you';b = load 'a' as (a:chararray);c = foreach b ge ...

  9. python中的类和实例

    今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...

随机推荐

  1. ANTLR4权威參考手冊(一)

    写在前面的话: 此文档是对伟大的Terence Parr的著作<the definitive antlr4 reference>的翻译本.致敬!欢迎转载,请注明原地址,请尊重劳动成果.翻译 ...

  2. 开源解析器--ANTLR

      序言 有的时候,我还真是怀疑过上本科时候学的那些原理课究竟是不是在浪费时间.比方学完操作系统原理之后我们并不能自己动手实现一个操作系统:学完数据库原理我们也不能弄出个像样的DBMS出来:相同,学完 ...

  3. Servlet过滤器——过滤器分析流量

    1.概述 Servlet过滤器可以对用户提交的数据或服务器返回的数据进行更改.任何到达服务器的请求都会首先经过过滤器的处理.本实例应用过滤器的这个特点,编写了一个在过滤器中统计网站流量的实例. 本实例 ...

  4. Windows 8 动手实验系列教程 实验7:磁贴和通知

    动手实验 实验7:磁贴和通知 2012年9月 简介 磁贴是Windows应用商店应用用户体验的重要元素.当应用程序被安装后,它的磁贴将在Windows 8开始屏幕被创建.该磁贴(称为主磁贴)作为启动应 ...

  5. zabbix 监控jmx 需要--enable-java

    安装Javagateway如果原来已经安装zabbix,只需要再添加以下zabbix-java # tar zxvf zabbix-2.2.0.tar.gz # cd zabbix-2.2.0 # . ...

  6. CABasicAnimation学习Demo 包含了一些经常使用的动画效果

    个人写的一些样例: // // ViewController.m // CABasicAnimationDemo // // Created by haotian on 14-6-13. // Cop ...

  7. Nginx 訪问日志增长暴增出现尖刀的具体分析

    前言:          Nginx日志里面Mobileweb_access.log增长特别大.一天上百兆.将近100W的訪问记录.依照我们眼下的规模,热点用户才500个左右.就算人人用手机app訪问 ...

  8. 与众不同 windows phone (4) - Launcher(启动器)

    原文:与众不同 windows phone (4) - Launcher(启动器) [索引页][源码下载] 与众不同 windows phone (4) - Launcher(启动器) 作者:weba ...

  9. HDU 1254 推箱子游戏(搞了一下午。。。)

    中文题目:http://acm.hdu.edu.cn/showproblem.php?pid=1254 一开始常规的人用来做主导,想着想着不对劲,其实是箱子为主导,人只是箱子能否推进的一个判断. 可以 ...

  10. Github上四种Lisp方言的流行度 | 肉山博客 (Wenshan's Blog)

    Github上四种Lisp方言的流行度 | 肉山博客 (Wenshan's Blog) Github上四种Lisp方言的流行度