中国企业网官方网站,温州外贸网站推广,阿里云域名续费,怎么找需要做网站的客户Pig 简介#xff1a;Pig 是 Apache 项目的一个子项目#xff0c;Pig 提供了一个支持大规模数据分析的平台#xff0c;Pig 突出的特点就是它的结构经得起大量并行任务的检验#xff0c;使得它能够处理大规模数据集Pig 特点#xff1a;Pig 可简化 MapReduce 任务的开发Pig …Pig 简介Pig 是 Apache 项目的一个子项目Pig 提供了一个支持大规模数据分析的平台Pig 突出的特点就是它的结构经得起大量并行任务的检验使得它能够处理大规模数据集Pig 特点Pig 可简化 MapReduce 任务的开发Pig 可以看做 Hadoop 的客户端软件可以连接到 Hadoop 集群进行数据分析工作Pig 方便不熟悉 Java 的用户使用一种较为简便的类似 SQL 的面向数据流的语言 PigLatin 语言进行数据处理PigLatin 可以进行排序过滤求和分组关联等常用操作还可以自定义函数这是面向数据分析处理的轻量级脚本语言Pig 可以看做是 PigLatin 到 MapReduce 的映射器当Pig在MapReduce模式运行时它将访问一个Hadoop集群和HDFS的安装位置。这时Pig将自动地对这个集群进行分配和回收Pig 的数据模式 relation(关系), bag(包), tuple(元组), field(字段列)relation(关系)具有相同字段(列)的 tuple 称为关系bag(包)与关系型数据库中的表类似包含多个 tupletuple(元组)相当于关系型数据库中的行与关系型数据库不同的是tuple 不要求每一行具有相同的结构field(字段列)与关系型数据库中的列相似不同的是field 中可以嵌套表而关系型 数据库中的列中不可以嵌套表Pig 的安装和配置安装 解压安装包并添加环境变量即可tar -zxvf pig-0.17.0.tar.gz -C ~/appvim ~/.bash_profixPIG_HOME PIG_HOME/app/pig-0.17.0export PIG_HOMEPATH$PIG_HOME/bin:$PATHexport PATHPig 有两种运行模式本地模式 操作 Linux 文件启动方式 pig -x local集群模式: 链接到 HDFSPIG_CLASSPATH/app/hadoop-2.7.3/etc/hadoopexport PIG_CLASSPATH启动命令 pigPig 操作 Linux 命令sh 后面跟linux 命令可以直接对 linux 中的文件进行操作ls cd cat mkdir pwd 操作 HDFScopyFromLocal 从linux 系统 copy 文件到 HDFScopyToLocal 从 HDFS copy 文件到 linux 系统register define 使用 Pig 自定义函数PigLatin 语句--- 需要使用 Hadoop 的 HistoryServermr-jobhistory-daemon.sh start historyserver地址 http://192.168.10.100:19888/jobhistory--- 常用的 PigLatin 语句load 加载数据到 bag (表)foreach 相当于循环 对 bag 每一条数据遍历filter 相当于 wheregroup by 分组join 连接generate 提取列union/intersect 集合运算输出dump 直接打印到屏幕上· store 输出到 HDFS 上举例: 7654,MARTIN,SALESMAN,7698,1981/9/28,1250,1400,30加载员工数据到bag(表)emp load /input/table/emp.csv using PigStorage(,)as (empno:int, ename:chararray, job:chararray, mgr:int, hiredate:chararray, sal:int, comm:int, deptno:int );dept load /scott/dept.csv using PigStorage(,) as(deptno:int,dname:chararray,loc:chararray);查看表结构 describe emp;查询员工信息员工号 姓名 薪水SQL语句 select empno, ename, sal from emp ;PL 语句 emp foreach emp generate empno, ename, sal;输出到屏幕上 dump emp;查询员工信息按照月薪排序SQL 语句select * from emp order by sal ;PL 语句emp order emp by sal ;分组求每个部门工资最高值SQL语句 select deptno, max(sql) from emp group by deptno ;PL 语句需要分两部1. 分组emp_group group emp by deptno ;2. 求每个部门最大值max_sal foreach emp_group generate group, MAX(emp.sal)查询 10 号部门的员工SQL 语句 select * from emp where deptno 10 ;PL 语句 deptno_10 filter emp by deptno10 ;多表查询员工姓名 部门名称SQL 语句 select e.ename d.dname from emp e, dept d where e.enamed.dname;PL 语句 分两部实现1. 将两个表中的两个字段提取出来放入一张表中newtable join dept by deptno, emp by ename2. 遍历提取出来的表将 员工表的员工姓名 部门表的部门名称提取出来table foreach newtable generate dept:: dname, emp:: ename集合运算 关系型数据库 Oracle 参与集合运算的各个集合必须列数相同且类型一致查询 10 号 和 20 号部门的员工SQL 语句 select * from emp where deptno10union select * from emp where deptno20;PL 语句emp10 filter emp by deptno10;emp20 filter dept by deptno20;emp10_20 union emp10, emp20;使用PL实现WordCount① 加载数据mydata load /data/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;