• 2014-08-05 pig


    Pig的数据类型能够分为两种:一种是scalar类型,包含单一的value,一种是complex类型,包含有其他的类型。

    对于scalar类型:

    int,long,float,double,chararray(取代了string),bytecharray.

    复杂点的类型:

    1、Map(我用python编写的对应的map总是出现问题,纠结了好久还是没有纠结好~~~才纠结好)书上的介绍:map是chararray(作为key)与其他数据元素的映射关系(作为value),其他的数据元素的类型为pig支持的数据类型,也包括复杂的数据类型。因为Pig并不知道value的类型,所以它假定这个为bytearray类型,但是真是的类型可能不是这样的,如果你知道这个value的类型,或者你希望是某个类型,你可以强制转换(cast)它。如果你不转换,Pig会以它认为的类型来定义,书的后面也有写Pig如何处理它不知道的类型。默认的情况下,没有要求values的必须是同一种类型。Pig0.9之后,可以申请values为一种类型。

    map的形式是:key,value之间由#隔开,每一对之间由逗号隔开,这些pairs由中括号括起来。

    如:['name'#'bob', 'age'#55]。

    记下我的程序:

    1          line = '';
    2          regulation = regulations.split(',');
    3          regulation.remove('');
    4          for re in regulation:
    5                 line = line +  re.replace(':', '#') + ',';
    6          line = line[len(line) - 1:];
    7          regulationMap = [line];    
    View Code

    这个程序里面的regulationMap就可以当作一个map来使用了。

    其他的:返回map,写成这种形式:@outputSchema("mapvalue: []"),在pig里面使用的时候用flatten。(后一个还没有仔细用。)

    涉及到map的还有两个问题:1、在pig,python的udf里面能不能读文件,每次读文件,都出错?2、flatten之后的数据跟别的数据join之后又问题。这个也还没有解决。

    用describe看一个变量数据:describe variableValue,可以知道其schema的组成。

    注意:flatten之后的数据可以用$0,$1等等来代表其第几个schema。

    map还有很多需要注意的地方,以后碰到再写。

    2、Tuple: 是有序集合,能够被分为好几个fields,每一个field包含一个元素,这些元素可以是任意类型,可以不是相同的类型。可以同为下标进行访问。tuple里面的value可以跟相应的type进行关联。tuple形式:小括号,每个元素之间逗号:('b', 55),两个元素。

    bag:

     先不写了。

    sql:

    http://www.cnblogs.com/wang-123/archive/2012/01/05/2312676.html

  • 相关阅读:
    MySQL ------ 触发器(TRIGGER)(二十七)
    MySQL ------ 游标(CURSOR)(二十六)
    小程序:ajax(页面跳转方式、http、ajax的应用)
    小程序:phpStudy(下载与安装、创建数据库)
    redis:key(常用命令、命名规范)
    redis:基础(内存维护策略、redis的开启与退出、RedisDesktopManager的安装与使用)
    小程序:列表(获取json中的数据)
    svn:IDEA与SVN(IDEA删除、检出、更新项目、解决冲突、恢复历史版本)
    svn:IDEA与SVN(配置SVN、IDEA添加项目到SVN)
    java:面向接口编程(解耦)
  • 原文地址:https://www.cnblogs.com/leewiki/p/3897191.html
Copyright © 2020-2023  润新知