Pig Latin

Pig Latin


加载数据
LOAD 运算符,从文件系统(HDFS / Local)将数据加载到Apache Pig中。
在左侧,需要提到我们想要存储数据的关系的名称;而在右侧,我们需要定义如何存储数据。

Relation_name = LOAD 'Input file path' USING function as schema;

function - 我们必须从Apache Pig提供的一组加载函数中选择一个函数( BinStorage,JsonLoader,PigStorage,TextLoader )。
Schema - 我们必须定义数据的模式,可以定义所需的模式如下 -
(column1 : data type, column2 : data type, column3 : data type);

例子:
student = LOAD 'hdfs://localhost:9000/pig_data/student_data.txt'
USING PigStorage(',')
as ( id:int, firstname:chararray, lastname:chararray, phone:chararray,
city:chararray );


存储数据
你可以使用 store 运算符将加载的数据存储在文件系统中
STORE Relation_name INTO ' required_directory_path ' [USING function];

例子:
STORE student INTO ' hdfs://localhost:9000/pig_Output/ ' USING PigStorage (',');


诊断运算符
Pig Latin提供四种不同类型的诊断运算符:
Dump运算符
Describe运算符
Explanation运算符
Illustration运算符

Dump 运算符用于运行Pig Latin语句,并在屏幕上显示结果,它通常用于调试目的。
Dump Relation_Name

describe 运算符用于查看关系的模式。
Describe Relation_name

explain 运算符用于显示关系的逻辑,物理和MapReduce执行计划。
explain Relation_name;

illustrate 运算符为你提供了一系列语句的逐步执行。
illustrate Relation_name;


Group运算符
GROUP 运算符用于在一个或多个关系中对数据进行分组,它收集具有相同key的数据。
Group_data = GROUP Relation_name BY age;

按多列分组
group_multiple = GROUP student_details by (age, city);

你可以按所有的列对关系进行分组,
group_all = GROUP student_details All;


Cogroup运算符
COGROUP 运算符的运作方式与 GROUP 运算符相同。两个运算符之间的唯一区别是 group 运算符通常用于一个关系,而 cogroup 运算符用于涉及两个或多个关系的语句。
cogroup_data = COGROUP student_details by age, employee_details by age;


Join运算符
JOIN 运算符用于组合来自两个或多个关系的记录。
连接可以是以下类型:
Self-join
Inner-join
Outer-join − left join, right join, and full join

Relation3_name = JOIN Relation1_name BY key, Relation2_name BY key ;

outer_left = JOIN customers BY id LEFT OUTER, orders BY customer_id;

outer_right = JOIN customers BY id RIGHT, orders BY customer_id;

outer_full = JOIN customers BY id FULL OUTER, orders BY customer_id;


CROSS 运算符计算两个或多个关系的向量积。(就是每个与另一个的所有组合)
Relation3_name = CROSS Relation1_name, Relation2_name;


Union运算符
UNION 运算符用于合并两个关系的内容。要对两个关系执行UNION操作,它们的列和域必须相同。
Relation_name3 = UNION Relation_name1, Relation_name2;


Split运算符
SPLIT 运算符用于将关系拆分为两个或多个关系。
SPLIT student_details into student_details1 if age<23, student_details2 if (22<age and age>25);


Filter运算符
FILTER 运算符用于根据条件从关系中选择所需的元组。
filter_data = FILTER student_details BY city == 'Chennai';


DISTINCT 运算符用于从关系中删除冗余(重复)元组。
distinct_data = DISTINCT student_details;


Foreach运算符
FOREACH 运算符用于基于列数据生成指定的数据转换。

Relation_name2 = FOREACH Relatin_name1 GENERATE (required data);

foreach_data = FOREACH student_details GENERATE id,age,city;


Order By运算符
Relation_name2 = ORDER Relatin_name1 BY (ASC|DESC);
order_by_data = ORDER student_details BY age DESC;


Limit运算符
Result = LIMIT Relation_name required number of tuples;

limit_data = LIMIT student_details 4;


Eval函数
各种内置函数


加载和存储函数
PigStorage() 加载和存储结构化文件。
STORE student INTO ' hdfs://localhost:9000/pig_Output/ ' USING PigStorage (',');

TextLoader() 是一个Load函数,用于以UTF-8格式加载非结构化数据。

BinStorage()函数
STORE student_details INTO 'hdfs://localhost:9000/pig_Output/mydata' USING BinStorage();
result = LOAD 'hdfs://localhost:9000/pig_Output/b/part-m-00000' USING BinStorage();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jie310600

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值