jnd = join a by f1, b by f2;

 
join操作默认的是内连接,只有两边都匹配才会保留
 
需要用null补位的那边需要知道它的模式:
如果是左外连接,需要知道右边的数据集的模式,不匹配的字段用null补位
如果是右外连接,需要知道左边的数据集的模式,不匹配的字段用null补位
如果是全外连接,需要知道两边的数据集的模式,不匹配的字段用null补位
 
触发reduce阶段
 
基本用法
a = load 'input1';
b = load 'input2';
jnd = join a by $0, b by $1;

   

多字段连接
a = load 'input1' as (username, age, city);
b = load 'input2' as (orderid, user, city);
jnd = join a by (username, city), b by (user, city);

  

:: join后的字段引用
a = load 'input1' as (username, age, address);
b = load 'input2' as (orderid, user, money;
jnd = join a by username, b by user;
result = foreach jnd generate a::username, a::age, address, b::orderid;

  

多数据集连接
a = load 'input1' as (username, age);
b = load 'input2' as (orderid, user);
c = load 'input3' as (user, acount);
jnd = join a by username, b by user, c by user;

  

外连接 仅限两个数据集
a = load 'input1' as (username, age);
b = load 'input2' as (orderid, user);
jnd = join a by username left outer, b by user;
jnd = join a by username right, b by user;
jnd = join a by username full, b by user;

  

自连接 需要加载自身数据集两次,使用不同的别名
a = load 'data' as (node, parentid, name);
b = load 'data' as (node, parentid, name);
jnd = join a by node, b by parentid;

  

 
 

Pig join用法举例的更多相关文章

  1. Pig group用法举例

        group语句可以把具有相同键值的数据聚合在一起,与SQL中的group操作有着本质的区别,在SQL中group by字句创建的组必须直接注入一个或多个聚合函数.在Pig Latin中grou ...

  2. Pig load 用法举例

    users = load '/users.data' using PigStorage() as (name:chararray, age:int, address:chararray);   loa ...

  3. Pig sample用法举例

    some = sample data 0.1   遍历整个数据集,获取指定比例的行数的数据,获取的数据不确定,条数也不准确.   内部重写为filter data by random() <= ...

  4. Pig limit用法举例

    lmt = limit data 10;   只获取指定条数的数据,不能保证每次得到的结果一致,先执行order再limit可以保证一致.   输入数据全部载入.   会触发reduce阶段   a ...

  5. Pig distinct用法举例

    dst = distinct data:   DISTINCT只能对整个记录(整行)去重,不能在字段级别去重.   触发reduce阶段   data = load 'data'; distinct ...

  6. Pig store用法举例

    store:将数据存储到HDFS等文件系统里   将数据保存到/data目录 store data into '/data'; 以逗号为分隔符 store data into '/data' usin ...

  7. Pig filter用法举例

    filter:过滤数据,只有符合特定条件的数据才会被保留下来,然后进入下一个数据流.   1)等值比较 filter data by $0 == 1 filter data by $0 != 1   ...

  8. Pig foreach用法举例

    foreach:一行一行的遍历数据,处理一行的数据,然后返回一个tuple. users = load '/users.data';   1)别名引用 f = foreach users genera ...

  9. python join与split函数的用法举例

    python join 和 split方法: join用来连接字符串,split恰好相反,拆分字符串的. 来看有关join.split方法的例子 1,join用法的例子 复制代码 代码示例: > ...

随机推荐

  1. 剑指offer五十七之二叉树的下一个结点

    一.题目 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 二.思路 结合图,我们可发现分成两大类: 1.有右子树 ...

  2. Exception message: /bin/bash: line 0: fg: no job control

    这个错误是 我本地idea 远程调试hadoop集群出现的 Diagnostics: Exception from container-launch. Container id: container_ ...

  3. Postman—脚本介绍

    前言 Postman包含一个基于Node.js的强大的运行时环境,它允许我们为请求和集合添加动态行为.这使的我们可以编写测试用例,构建可包含动态参数的请求,在请求之间传递数据等等. 我们可以在流程中以 ...

  4. LDA理解

    LDA只是一个求解思路. 1.理解LDA首先要理解EM算法,EM不能叫做一个算法,只是一个思想:它要求解的其实是一个极大似然估计,就是我用已知量去求解导致这个已知量出现的最大概率,而在这里又恰恰有点偏 ...

  5. mongodb-手写mongoclient加入到springmvc中

    由于一个项目使用的是springmvc3.x版本, mongodb使用的为3.x版本, 所以springmvc继承的mongodb-data并不可用, 只能自己手写一个mongoclient并加入到s ...

  6. php的isset()和empty()区别

    转载:http://www.cnblogs.com/ndxsdhy/archive/2011/04/02/2003193.html 1.isset()函数 一般用来检测变量是否设置 (是否已经赋值) ...

  7. Linux内存信息查看——free命令

    free 命令可以显示系统已用和空闲的内存情况.包括物理内存.交互区内存(swap)和内核缓冲区内存(buffer).共享内存将被忽略.在Linux系统监控的工具中,free命令是最经常使用的命令之一 ...

  8. URL编码分析与乱码解决方案

    一.问题的由来 URL就是网址,只要上网,就一定会用到. 一般来说,URL只能使用英文字母.阿拉伯数字和某些标点符号,不能使用其他文字和符号.比如,世界上有英文字母的网址"http://ww ...

  9. C#语法之泛型

    前面两篇C#语法主要是回顾委托相关的.这篇主要回顾了泛型. 一.为什么要有泛型? 我们在写一些方法时可能会方法名相同,参数类型不同的方法,这种叫做重载.如果只是因为参数类型不同里面做的业务逻辑都是相同 ...

  10. Linux系统资源查看 之 资源信息

    1. 系统 版本信息 内核版本 使用 uname 命令: -a : 查看所有系统信息 -r : 查看内核版本信息 -s : 查看内核名称 代码如下: [niesh@niesh ~]$ uname -a ...