pig 编程指南笔记

来源:互联网 发布:巨人网络收购alpha 编辑:程序博客网 时间:2024/05/29 10:26

pig数据类型:

pig的基本数据类型是和java一样的

pig中有复杂的数据类型

map

tuple 元组:

以圆括号包裹,类似于sql里的一张表,元组中的数据类型可以任意,也可以指定,用以pig环境进行类型检查!

tuple长度固定,可以用下标取值!

bag:

bag是无序的,不能按下标去取,可以用foreach逐个获取!

NULL:

pig中null表示数据未知,或者是数据缺失,与c++,java的null不同!

模式:

  • 模式是用来告诉pig,将要处理的数据时什么格式,对于多出的列,会自动丢弃,少的列用null填充
  • as(a:int,b:chararry)
  • 可以不指定类型,这时,类型是bytearray!
  • 可以指定map,tuple,bag

as(a:map[],b:map[int])

as(a:tuple(),b:tuple(a:int,b:double) )

as(a:map[],b:map[int])

as(a:bag{},b:bag{t:(a:int,b:chararry)})bag中的元组必须指定名字,即使不用!

    • 在没有指定模式时候,可以使用$n,取第n列的值,每一列的值在加载时默认为bytearray,之后会根据用户的使用推断数据类型
    • 无模式会传染:

如果一个有数据类型的和无数据类型的数据一起混用,则这个模式会被丢弃

类型转换:

    • pig中减号是用于数值型的!
    • 通常,在进行类型转换时都会类似c语言,向范围更大的类型转换

  int < long <float<double

    • 数值类型与chararry之间无隐式转换!
    •  在未定义数据类型时,pig会推测,可能的数据类型,尽可能地向推测的数据类型转换
    • 运行时匹配??????

 

0 0
原创粉丝点击