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会推测,可能的数据类型,尽可能地向推测的数据类型转换
- 运行时匹配??????