pig 编程指南笔记(二) 基础知识

加载:

pig默认使用pigStora 函数加载 HDFS中的文件

默认的路径为当前用户的HDFS用户目录:/user/yourlogin

当然也可以指定完整的路径hdfs://localhost/data/filename

使用using指定用户指定的加载函数

可以指定参数,指定分隔符

divs = load 'filename' using pigStorage(',');--使‘,’作为分隔符,默认使用制表符!

可以指定文件夹,则文件夹下的所有会被加载

可使用任意模式,加载匹配模式的文件

 

输出:

使用store会将处理后的数据写到指定文件

默认使用pigstrae函数,可传入参数表示分隔符,默认制表符

可以使用using指定输出函数

dump可以用来将结果打印到屏幕

 

 

foreach:

每个foreach产生的结果都是一个新的tuple

如果为新tuple中,如果为直接投射,未经过如加减等操作,会依据之前的字段名称,推断名称(即复制名称),否则无名称

可以使用as 赋新名称

 

filter:

过滤数据,讲判别式为真的数据保留

可以使用正则表达式,pig使用java的正则表达式!用 match关键字

可以使用 + ,- ,> , < ,>= ,<=

可以多个断言,用and or not一起使用,使用规则与c中的 && || 一致

对null 会抵消,即x==null x+null 返回null,filter只通过 true的值

用is null判断是否为null

 

group:

将数据以特定的一列或几列,作为键值,相同的键值聚集到一起

每一条数据的形式为(group:tuple, 被grop关系名:{})

group会触发shuffle过程!

所有null键值会聚集到一起!

 

orderby:

 orderby 按照指定一个或者多个键经行排序,对多个部分的文件,保证第n个文件的键值小鱼第n-1个

默认使用升序,使用desc按照降序排列,desc支队最接近其的键值起作用,其他键值依然是升序!

chararry字典序,bytearray按字节的字节组成的串以字典序排列!

null永远是最小的

group后的数据,会造成数据倾斜,order会使用均衡器,先采样,再分割!------>会导致同一键值的分配到多个reducer(mapreducer 默认的同一键值的在同一reducer里)

 

 

 

 distinct

join

limit

sample

 

 parallel:

告知触发reduce的在操作,使用多少个redue,只对使用的语句的相关操作,起作用

可以使用set default parallel 10;设置指定当前脚本的指定的reduce数量

  注册UDF:

在pig中总体来说有2种注册UDF的方式,一种是使用命令行,另一种是在脚本中直接使用register

命令行:

define:

使用define useName xx.xx.xxx.f()

则可以直接使用useName 而不需要使用包名

构造函数参数??,返回对象??

 

 

pig指令:pig -Dudf.import.list = xx.xx.xx.jar register.pig, 则可以在所有的脚本中使用xx.jar中定义的UDF不需要使用长串的包名

注册命令:

脚本中写:

    • 直接register 'path/xx.jar',使用时加上jar的包名+UDF名
    • pig会吧xx.jar打到Hadoop运行时需要的jar包中

 

注册jython中,定义的UDF:

    • 使用register ‘xx.py’ using jython as fieldName;
    • xx.py必须在当前用户目录下
    •  using jython 表示是使用Python写的,pig不知道,UDF用神马写
    • as fieldName 为UDF确定一个域名,通过fieldName.fu() 调用UDF
    • pig不会追踪Python运行所需的模块,要确保所欲的模块都在pig的运行环境中

 

 

 调用静态java函数:

    •  define useName InvokeForXX(包名.类名.方法名, 参数)
    • 函数返回类型只能是int,long,float,double,String类型
    • 参数只能是 int,long ,float,double,string ,array类型
    • pig不支持对返回类型进行重载,so需指定InvolkeForXX,XX -->INT,LONG
    • 函数为数组,pig会包装成bag传入

 

 传入数组:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值