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]。

记下我的程序:

          line = '';
regulation = regulations.split(',');
regulation.remove('');
for re in regulation:
line = line + re.replace(':', '#') + ',';
line = line[len(line) - 1:];
regulationMap = [line];

这个程序里面的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

2014-08-05 pig的更多相关文章

  1. E2 2014.08.05 更新日志

    增加功能 增加手机.平板兼容模块,用手机平板也能正常登陆和使用软件 介绍  演示 对数据库全面优化,全面提升数据量很大时统计分析的性能 完善功能 销售分析增加按商品分类分析 完善客户明细窗口的客户信息 ...

  2. http://www.blogjava.net/xylz/archive/2013/08/05/402405.html

    http://www.blogjava.net/xylz/archive/2013/08/05/402405.html

  3. http://tedhacker.top/2016/08/05/Spring%E7%BA%BF%E7%A8%8B%E6%B1%A0%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/

    http://tedhacker.top/2016/08/05/Spring%E7%BA%BF%E7%A8%8B%E6%B1%A0%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%9 ...

  4. app后端设计(11)-- 系统架构(2014.12.05更新)

    个人认为,在小型的创业团队中,特别是以应用产品为主,在架构后台的时候,需要集中精力解决自身业务上的问题,不是花时间解决第三方已经解决的问题,简单点来说,就是能用第三方服务就使用第三方的服务.基于这个原 ...

  5. app后端设计(3)--短信,邮件,推送服务(2014.12.05更新)

    在app的后端设计中,免不了消息的推送,短信,邮件等服务,下面就个人的开发经验谈谈这方面. (1)最重要的是,各种推送一定要放在队列系统中处理,不然会严重影响api的响应时间. (2)短信方面 以前我 ...

  6. 新手C#类、对象、字段、方法的学习2018.08.05

    类:具有相似属性和方法的对象的集合,如“人”是个类. 对象(实例):对象是具体的看得见摸得着的,如“张三”是“人”这个类的对象.(new Person()开辟了堆空间中,=开辟了栈空间,变量P存放在该 ...

  7. 新手C#s.Split(),s.Substring(,)以及读取txt文件中的字符串的学习2018.08.05

    s.split()用于字符串分割,具有多种重载方法,可以通过指定字符或字符串分割原字符串成为字符串数组. //s.Split()用于分割字符串为字符串数组,StringSplitOptions.Rem ...

  8. js 时间 Fri Dec 12 2014 08:00:00 GMT+0800

    第一种var d = new Date('Fri Dec 12 2014 08:00:00 GMT+0800'); ) + '-' + d.getDate() + ' ' + d.getHours() ...

  9. Image Processing and Computer Vision_Review:A survey of recent advances in visual feature detection(Author's Accepted Manuscript)——2014.08

    翻译 一项关于视觉特征检测的最新进展概述(作者已被接受的手稿) 和A survey of recent advances in visual feature detection——2014.08内容相 ...

  10. 2021.08.05 P1738 洛谷的文件夹(树形结构)

    2021.08.05 P1738 洛谷的文件夹(树形结构) P1738 洛谷的文件夹 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树!! 题意: 给出n个网页路径,求 ...

随机推荐

  1. leetcode 第一题 Two Num java

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  2. bzoj 2402: 陶陶的难题II 二分答案维护凸包

    2402: 陶陶的难题II Time Limit: 40 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 68  Solved: 45[Submi ...

  3. 关于路由、AP、交换机的小总结

    整理自关于路由.AP.交换机的小总结 要将各种设备连成网络,一般运用网络中的两层,即第二层的数据链路层和第三层的网络层.而设备之间需要通信就需要各自的网络地址. 第二层设备有物理地址即MAC地址,这对 ...

  4. C++ Socket UDP "Hello World!"

    这是C++ SOCKET网络程序中的C/S结构之UDP "Hello World !",共两个控制台工程: //////////////////////////////////// ...

  5. ASPX在Debug模式下直接link原始CSS而非Bundle后的CSS

    由于对CSS做了bundle, debug的时候修改原始css文件不会直接反映到浏览器中, 效率较低. 于是我想在debug的时候直接link原始CSS. 很简单. <% #if DEBUG % ...

  6. Apache benchmark 压力测试工具

    ab 的全称是 ApacheBench , 是 Apache 附带的一个小工具 , 专门用于 HTTP Server 的 benchmark testing , 可以同时模拟多个并发请求. 安装apa ...

  7. 一个优秀的http实现框架

    package com.ming; import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unir ...

  8. 转载:MyEclipse中防止代码格式化时出现换行的情况的设置

     转载出处:http://www.cnblogs.com/yjhrem/articles/2310013.html 编辑完成代码,用MyEclipse的代码格式化后,本来不长的代码也被自动转成了多行. ...

  9. 【HDOJ】1166 敌兵布阵

    线段树. #include <stdio.h> #define maxn 55555 ]; void PushUP(int rt) { sums[rt] = sums[rt<< ...

  10. Datetime中yyyy-MM-dd-hh-mm-ss的格式

    namespace yyyy_MM_dd_hh_mm{    class Program    {        static void Main(string[] args)        { wh ...