初学pig的笔记

hadoop 之pig 相比Java的MapReduce api,Pig为大型数据集的处理提供了更高层次的抽象,与MapReduce相比,Pig提供了更丰富的数据结构,一般都是多值和嵌套的数据结构。Pig还提供了一套更强大的数据变换操作,包括在MapReduce中被忽视的连接Join操作。 pig 也是hadoop中的一员,是为了简化原生的mapreduce,不用运行jar便可以做mapreduce,只需要输入几行... 阅读详情




数据分析引擎:Pig
---------------------------------
一、什么是Pig?安装和配置
1、最早由Yahoo开发,后来给Apache
2、支持语句PigLatin语句,类似SQL
3、翻译器:PigLatin语句 ----> MapReduce
                              Spark(从0.17开始支持)
4、安装和配置
    tar -zxvf pig-0.17.0.tar.gz -C ~/training/
设置环境变量
PIG_HOME=/root/training/pig-0.17.0
export PIG_HOME


PATH=$PIG_HOME/bin:$PATH
export PATH

5、两种模式
(1)本地模式:操作的是Linux的文件
pig -x local
日志: Connecting to hadoop file system at: file:///

(2)集群模式:链接到HDFS上
设置一个环境变量: PIG_CLASSPATH  ----> Hadoop的配置文件所在的目录
PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop
export PIG_CLASSPATH

pig
日志:Connecting to hadoop file system at: hdfs://bigdata111:9000




二、Pig的常用命令:操作HDFS
ls、cd、cat、mkdir、pwd
copyFromLocal(上传)、copyToLocal(下载)
sh: 调用操作系统的命令
register、define -----> 部署pig的自定义函数的jar包


三、Pig的数据模型(重要) ----> 表结构
  Tuple: 行  Pig
             Apache Storm是实时计算引擎


四、使用PigLatin语句分析数据
1、需要启动Yarn的HistoryServer:记录所有执行过的任务
mr-jobhistory-daemon.sh start historyserver
URL:  http://ip:19888/jobhistory


2、常见的PigLatin语句(注意:PigLatin语句跟Spark中算子/方法非常像)
(*)load    加载数据到表(bag)
(*)foreach   相当于循环,对bag中每一个行tuple进行处理
(*)filter    过滤、相当于where
(*)group by  分组
(*)order by  排序
(*)join      链接
(*)generate  提取列
(*)union、intersect  集合运算
(*)输出:dump  屏幕
           store  保存到文件
   
注意:PigLatin有些会触发计算,有些不会
      类似Spark RDD 算子(方法):Transformation方法(算子) -----> 不会触发计算
                              Action方法(算子) ------> 会触发Spark的计算
3、使用PigLatin语句
7499,ALLEN,SALESMAN,7698,1981/2/20,1600,300,30

(1)创建员工表  emp
     emp = load '/scott/emp.csv';
 
查看表结构
describe emp;
Schema for emp unknown


(2)创建表,指定schema(结构)
     emp = load '/scott/emp.csv' as(empno,ename,job,mgr,hiredate,sal,comm,deptno);
默认的列的类型:bytearray
默认的分隔符:制表符
 
最终版:
emp = load '/scott/emp.csv' using PigStorage(',') as(empno:int,ename:chararray,job:chararray,mgr:int,hiredate:chararray,sal:int,comm:int,deptno:int);

再创建部门表
10,ACCOUNTING,NEW YORK
dept = load '/scott/dept.csv' using PigStorage(',') as(deptno:int,dname:chararray,loc:chararray);

(3)查询员工信息:员工号 姓名 薪水
     SQL:  select empno,ename,sal from emp;
PL:   emp3 = foreach emp generate empno,ename,sal;    ----> 不会触发计算
       dump emp3;
   
(4)查询员工信息,按照月薪排序
SQL:  select * from emp order by sal;
PL:   emp4 = order emp by sal;
      dump emp4;
  
(5)分组:求每个部门的最高工资: 部门号  部门的最高工资
SQL:  select deptno,max(sal) from emp group by deptno;
PL:   第一步:先分组
emp51 = group emp by deptno;
查看emp51的表结构
emp51: {group: int,
emp: {(empno: int,ename: chararray,job: chararray,mgr: int,hiredate: chararray,sal: int,comm: int,deptno: int)}}

dump emp51;
数据
group         emp
(10,{(7934,MILLER,CLERK,7782,1982/1/23,1300,,10),
     (7839,KING,PRESIDENT,,1981/11/17,5000,,10),
(7782,CLARK,MANAGER,7839,1981/6/9,2450,,10)})
 
(20,{(7876,ADAMS,CLERK,7788,1987/5/23,1100,,20),
     (7788,SCOTT,ANALYST,7566,1987/4/19,3000,,20),
(7369,SMITH,CLERK,7902,1980/12/17,800,,20),
(7566,JONES,MANAGER,7839,1981/4/2,2975,,20),
(7902,FORD,ANALYST,7566,1981/12/3,3000,,20)})
 
(30,{(7844,TURNER,SALESMAN,7698,1981/9/8,1500,0,30),
     (7499,ALLEN,SALESMAN,7698,1981/2/20,1600,300,30),
(7698,BLAKE,MANAGER,7839,1981/5/1,2850,,30),
(7654,MARTIN,SALESMAN,7698,1981/9/28,1250,1400,30),
(7521,WARD,SALESMAN,7698,1981/2/22,1250,500,30),
(7900,JAMES,CLERK,7698,1981/12/3,950,,30)})


  第二步:求每个组(每个部门)工资的最大值
注意:MAX大写
        emp52 = foreach emp51 generate group,MAX(emp.sal)

(6)查询10号部门的员工
      SQL:  select * from emp where deptno=10;
  PL:   emp6 = filter emp by deptno==10;   注意:两个等号
  
(7)多表查询:部门名称、员工姓名
      SQL:  select d.dname,e.ename from emp e,dept d where e.deptno=d.deptno;
  PL:   emp71 = join dept by deptno,emp by deptno;
        emp72 = foreach emp71 generate dept::dname,emp::ename;

(8)集合运算:
      查询10和20号部门的员工信息
SQL:   select * from emp where deptno=10
        union
select * from emp where deptno=20;

注意:Oracle中,是否任意的集合都可以参与集合运算?
                           参与集合运算的各个集合,必须列数相同、且类型一致
                           select deptno,job,sum(sal) from emp group by deptno,job
                           union 
   select deptno,to_char(null),sum(sal) from emp group by deptno
   union
   select to_number(null),to_char(null),sum(sal) from emp;

PL:  emp10 = filter emp by deptno==10;
     emp20 = filter emp by deptno==20;
emp1020 = union emp10,emp20;
 
(9)执行WordCount
① 加载数据 
mydata = load '/input/data.txt' as (line:chararray);


② 将字符串分割成单词 
words = foreach mydata generate flatten(TOKENIZE(line)) as word;


③ 对单词进行分组 
grpd = group words by word; 


④ 统计每组中单词数量 
cntd = foreach grpd generate group,COUNT(words); 


⑤ 打印结果 
dump cntd;


注意:后面的操作依赖前面的操作,类似Spark的RDD(依赖关系)
 


五、Pig的自定义函数:3种  ---> 打成jar包
依赖的jar
/root/training/pig-0.14.0/pig-0.14.0-core-h2.jar
/root/training/pig-0.14.0/lib
/root/training/pig-0.14.0/lib/h2
/root/training/hadoop-2.4.1/share/hadoop/common
/root/training/hadoop-2.4.1/share/hadoop/common/lib


1、自定义的运算函数: 根据员工的薪水,判断薪水的级别
2、自定义的过滤函数: 查询薪水大于2000的员工
EMP11 = filter emp by pig.IsSalaryTo0High(sal);dump EMP11;(执行)

3、自定义的加载函数(最麻烦)

还需要MR的jar包
注册jar包
   register /root/temp/pigfunc.jar
   
(define 创建别名
   define myloadfunc pig.MyLoadFunction;)

mydemo = load '/input/data.txt' using pig.MyLoadFunction();(执行)

                dump mydemo;































大数据pig实战 大数据pig实战,大数据pig实战,大数据pig实战大数据pig实战大数据pig实战 立即下载

相关推荐

大数据Pig学习

pig学习 PPT

大数据分析工具Pig详细介绍

什么是Pig?Pig是一种数据流语言和运行环境,常用于检索和分析数据量较大的数据集。Pig包括两部分:一是用于描述数据流的语言,称为Pig Latin;二是用于运行Pig Latin程序的执行环境。Pig与Hive的区别?Pig与Hive作为一种高级数据语言,均运行于HDFS之上,是hadoop上层的衍生架构,用于简化hadoop任务,并对MapReduce进行一个更高层次的封装。Pig与Hive...

Yummy 1万+

C语言编写Picard迭代和牛顿迭代法

为了完成学校计算方法的作业,花了两个多星期将所有实验报告编写出来,看到同桌找代码的辛苦,优快云也没有这类代码,我只是一时兴起,想分享我写的代码与大家共飨,有错误还请多多指正,代码都不难,也是为了让优快云帮我保存下,我辛辛苦苦做出来的,倘若能给别人带来一丝一毫的帮助,我都万分荣幸。 1:什么是Picard迭代 先弄一个满足f(x) = 0的函数将其转化为x= 正在上传… 重新上传 取消 ...

mohenxiang的博客 4699

大数据数据流分析和处理的工具pig,从入门到精通!

Pig是一种数据流语言和运行环境,用于处理和分析大数据。 Pig由两个主要部分构成: Pig Latin语言:这是一种用于描述数据流的高级语言,它允许用户以较为简洁的方式编写数据处理和转换任务。 Pig执行环境:这是Pig Latin程序的运行平台,负责解析、优化并执行Pig Latin脚本。

qq_45746668的博客 1350

Matlab中eig内置函数转为C语言

本文记录一下如何将MATLAB中的eig函数转为C语言,即通过C语言求解矩阵的特征值与特征向量。[V,D]=eig(Rx)中V为矩阵Rx的特征向量,D为矩阵的特征值。其中Rx维度为12*12的复矩阵。 首先在MATLAB端创建入口函数保存为eigvalue.m: 打开MATLAB Coder,添加入口函数: 3.在定义输入类型窗口中,需要添加输入数据来训练...

u011441044的博客 3516

YOLO十年演进:从CNN到Transformer再到MoE,我看懂了2026年目标检测的落地风向标

技术永远是为业务服务的,能解决真实问题的技术,才是有价值的。YOLO的十年演进,从CNN到Transformer再到MoE,从来都不是学术上的炫技,而是一步一步解决工业落地的痛点:从让实时检测成为可能,到解决复杂场景的漏检误检,再到打破精度和算力的死局,每一步都踩在了工业落地的真实需求上。很多新入行的朋友,总喜欢追新,今天换Transformer,明天堆MoE,觉得模型越新、参数越大,就越厉害。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 748

Hadoop的数据分析引擎:Pig

一、什么是Pig?安装和配置 1、最早由Yahoo开发,后来给Apache 2、支持语句PigLatin语句,类似SQL 3、翻译器:PigLatin语句 ----> MapReduce                               Spark(从0.17开始支持) 4、安装和配置     tar -zxvf pig-0.17.0.tar.gz -C ~/training/ ...

小鹏的专栏 743

《QT+PCL 第一章》:点云读取显示

点云读取显示一、核心代码二、QT设置三、效果展示 一、核心代码 二、QT设置 三、效果展示

阁楼 1万+

【大数据离线开发】9 Pig:数据分析引擎

Pig是一个基于Apache Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫PigLatin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口,使用者可以透过Python或者JavaScript编写Java,之后再重新转写。Pig的特点Pig是一个用来处理大规模数据集的平台,由Yahoo!贡献给ApachePig可以简化MapReduce任务的开发Pig可以看做hadoop的客户端软件。

小卓仗剑走天涯的博客 2420

深入理解 HTTP 协议中的 Content-Type

是 HTTP 协议中的一个头部字段(Header),用于指示请求或响应中实体主体(body)的媒体类型(Media Type),也称为MIME 类型(Multipurpose Internet Mail Extensions)。

h a 6 6 6 c k 为 你解决复杂难题! 997

【25届数字IC秋招总结】面试经验6——经纬恒润

25届数字ic面试记录——经纬恒润

lalala0635的博客 991

大数据Hadoop生态圈:Pig和Hive

前言 Pig最早是雅虎公司的一个基于Hadoop的并行处理架构,后来Yahoo将Pig捐献给Apache的一个项目,由Apache来负责维护,Pig是一个基于 Hadoop的大规模数据分析平台。 Pig为复杂的海量数据并行计算提供了一个简 易的操作和编程接口,这一点和FaceBook开源的Hive一样简洁,清晰,易上手! 一、Pig概述 Pig包括 两部分 1:用于描述数据流的语言,称...

weixin_30675247的博客 453

IEC 104电力规约详细解读(五) - 遥控

主站下发遥控选择命令,子站进行遥控选择返校,若成功则回答遥控选择成功报文,若失败则回答失败报文。主站下发取消遥控命令或者遥控执行命令行。子站皆以报文的镜像确认。遥控命令用来实现对一个可操作设备状态的改变。在配电自动化中,包括单点命令和双点命令。通常,单点命令用于控制单点信息对象;双点命令用于控制双点信息对象。

张二狗的博客 7352

斯坦福大学Andrew Ng教授《机器学习》课程的个人学习笔记

这里面的内容是我在2011年上半年学习斯坦福大学《机器学习》课程的个人学习笔记,内容主要来自Andrew Ng教授的讲义和学习视频。另外也包含来自其他论文和其他学校讲义的一些内容。每章内容主要按照个人学习时的思路总结得到。由于是个人笔记,里面表述错误、公式错误、理解错误、笔误都会存在。更重要的是我是初学者,千万不要认为里面的思路都正确。如果有疑问的地方,请第一时间参考Andrew Ng教授的讲义原...

weixin_40013463的博客 415

【SystemVerilog基础】SystemVerilog Assertion 概述

断言主要是描述复杂的设计行为;是传统验证方法学一个很好的补充,可以检查到电路内部细节,相当于一种白盒验证,传统的验证方法学是纯粹的黑盒验证!property跟上面的sequence差别不大,唯一有差别可能多了两个implication(|->,|=>)注意,当有前置条件时,不满足前置条件不会fail,而是伪真!上面这个因为没有前置条件,每个周期都会去检查!注意:当没有前置条件时,不满足条件会直接fail!

MoorePlus的博客 332

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Pig笔记

Pig笔记

大连赵哥的博客 264

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

pig的安装和使用

1、  Pig简介 Pig是这样一个平台,它能够对由高级语言编写的数据 分析程序 组成的大型数据集 进行分析、评估。Pig程序最突出的优势是它的结构能够经受得住高度并行化的检验,这个特性让它能够处理大型的数据集。     目前,Pig的底层由一个编译 器组成,它在运行 的时候会产生一些Map-Reduce程序序列,并且这里大规模的并行执行依然存在(例如,Hadoop 子工程)。当前,Pig的语

yangkaiwxy的专栏 3615

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

stanford 机器学习笔记

转自http://www.cnblogs.com/jerrylead/archive/2012/05/08/2489725.html 个: 斯坦福大学机器学习课程个人学习笔记(上).zip 斯坦福大学机器学习课程个人学习笔记(下).zip   一并附上原始讲义: 斯坦福大学机器学习课程原始讲义.zip   说明: 这里面的内容是我在2011年上半年学习斯坦福大学《机器学习》课

Aijon的专栏 1163

pig(转载)

本文可以让刚接触pig的人对一些基础概念有个初步的了解。本文大概是互联网上第一篇公开发表的且涵盖大量实际例子的Apache Pig中文教程(由Google搜索可知),文中的大量实例都是作者Darran Zhang(website: codelast.com)在工作、学习中总结的经验或解决的问题,并且添加了较为详尽的说明及注解,此外,作者还在不断地添加本文的内容,希望能帮助一部分人。 A...

293

pig 安装和命令简介

    0 概念: Pig是专门用于处理数据的。Pig提供了一套流式的数据处理语言,转换为MapReduce,处理HDFS中的数据。pig加载hdfs文件到自己体系内处理好后在送回去。pig中的字符串类型是bytearray下载地址: http://www.apache.org/dyn/closer.cgi/pig     1  如何安装和使用pig?不用配置,pig启动时读配置文...

后知后觉的it路 383

pig mysql_Hadoop Pig学习笔记(一) 各种SQL在PIG中实现

我这里以Mysql 5.1.x为例,Pig的版本是0.8同时我将数据放在了两个文件,存放在/tmp/data_file_1和/tmp/data_file_2中.文件内容如下:tmp_file_1:Txt代码zhangsan 23 1lisi 24 1wangmazi 30 1meinv 18 0dama 55 0zhangsan231lisi241wangmazi301meinv180dama55...

weixin_35305499的博客 147

Alex 的 Hadoop 菜鸟教程: 第16课 Pig 安装使用教程

本教程介绍Pig的安装和使用。hdfs虽说是一个文件空间,但是我们每次要查看hdfs上的文件的时候都要输入一大串命令,比如一个简单的ls都需要输入 : hdfs dfs -ls / ,而且还不能cd到某个目录,这样就造成了每次ls都要带上全路径的麻烦,能不能有一个工具可以模拟linux下的shell呢?Pig就实现了这样的需求,可以直接ls,可以cd到某个目录。并且Pig还创造了 Pig Latin语言,可以通过Pig写一个类似存储过程的MapReduce的Job,pig会自动帮你把这个job翻译成MapR

软件哲学 4176

Apache Pig的一些基础概念及用法总结(1)

Apache pig是用来处理大 规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要 小N倍,实现同样的效果的代码量也小N倍。Twitter就大量使用pig来处理海量数据——有兴趣的,可以看Twitt...

chupikt95032的博客 321

Apache Pig 教程

Pig 教程 Pig概述 Pig架构 Pig安装 Pig执行 Pig shell Pig Latin基础知识 Pig读数据 Pig存储数据 Pig 诊断操作符 Pig描述操作符 Pig解释运算符 Pig图解运算符 Pig 组运算符 Pig Cogroup操作符 Pig加法运算符 Pig交叉操作 Pig 联合运算符 Pig split Pig过滤器运算符 Pig特有操作符 Pig...

qq_44037690的博客 476

Apache Pig 学习笔记

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34341229的博客 192

pig语法学习 FOREACH GENERATE group AS

深入浅出,转一个 转载必须注明出处:http://www.codelast.com/ 转载地址 本文可以让刚接触pig的人对一些基础概念有个初步的了解。 本文大概是互联网上第一篇公开发表的且涵盖大量实际例子的Apache Pig中文教程(由Google搜索可知),文中的大量实例都是作者Darran Zhang(website: codelast.com)在工作、学习

专注大规模数据处理 3206
上一篇: User: root is not allowed to impersonate anonymous报错
博得不在
博客等级 码龄9年 5粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值