pig连接oracle数据库,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(包):与关系型数据库中的表类似,包含多个 tuple,

tuple(元组):相当于关系型数据库中的行,与关系型数据库不同的是,tuple 不要求每一行具有相同的结构

field(字段,列):与关系型数据库中的列相似,不同的是,field 中可以嵌套表,而关系型 数据库中的列中不可以嵌套表

Pig 的安装和配置:

安装: 解压安装包并添加环境变量即可

tar -zxvf pig-0.17.0.tar.gz -C ~/app

vim  ~/.bash_profix

PIG_HOME= PIG_HOME=/app/pig-0.17.0

export  PIG_HOME

PATH=$PIG_HOME/bin:$PATH

export  PATH

Pig 有两种运行模式:本地模式: 操作 Linux 文件

启动方式: pig  -x   local

集群模式: 链接到 HDFS

PIG_CLASSPATH=/app/hadoop-2.7.3/etc/hadoop

export  PIG_CLASSPATH

启动命令: pig

Pig 操作 Linux 命令:

sh  后面跟linux 命令可以直接对 linux 中的文件进行操作

ls    cd   cat   mkdir    pwd  操作 HDFS

copyFromLocal    从linux 系统 copy 文件到  HDFS

copyToLocal        从 HDFS copy 文件到 linux 系统

register   define        使用 Pig 自定义函数

PigLatin 语句:

---> 需要使用 Hadoop 的 HistoryServer

mr-jobhistory-daemon.sh  start  historyserver

地址: http://192.168.10.100:19888/jobhistory

---> 常用的 PigLatin 语句

load                        加载数据到 bag (表)

foreach                   相当于循环, 对 bag 每一条数据遍历

filter                        相当于 where

group  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  deptno==10 ;

多表查询:员工姓名, 部门名称

SQL 语句: select  e.ename  d.dname  from  emp  e,  dept  d  where  e.ename=d.dname;

PL 语句: 分两部实现

1. 将两个表中的两个字段提取出来放入一张表中

newtable = join dept by deptno,  emp  by  ename

2. 遍历提取出来的表,将 员工表的员工姓名, 部门表的部门名称提取出来

table = foreach  newtable  generate  dept:: dname,  emp:: ename

集合运算: 关系型数据库 Oracle : 参与集合运算的各个集合必须列数相同且类型一致

查询 10  号  和 20  号部门的员工

SQL 语句:  select  *  from emp  where  deptno=10

union  select  *  from emp  where  deptno=20;

PL 语句:emp10 = filter  emp  by  deptno==10;

emp20 = filter  dept  by  deptno==20;

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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统如何备份系统软件,Linux折腾记(十三):我该如何备份系统

在前面的一些文章中,我反复提到经常会把系统搞崩溃,所以备份系统就是一件不容忽视的事情。由于Linux系统本身的优越性,系统的备份和还原还是比较容易的。主要表现在以下方面:1.Linux系统所有的数据都以文件的形式存在,…

linux kset subsystem 3.10内核,Kobject、Kset 和 Subsystem

2014年5月12日Kobject 、Kset 和 Subsy stem - 海王 - 博客园http://www.doczj.com/doc/93b5b6113b3567ec112d8a49.html/leav en/archiv e/2010/04/24/1719191.html 4/8件(2)4. Linux input 子系统 io 控制字段(2)5. linux 内核定时器 tim er_list 详解(2) (2)把kobject 的 kse…

linux基础命令下载,Linux基础命令教程豪华版

豪华版主张学到更多的Linux命令知识。从这里开始学习Linux命令,本课程让你更清楚地了解和掌握它,在Linux中命令是讲究大小写的,所以请管好你的CapsLock键。不用担心,Linux命令说到底是几个字母的东西,你能学好它的&…

linux中循环删除脚本,shell脚本:遍历删除

遍历删除文本内路径上文件windows上测试可以安装Git linux中,准备删除文件的脚本deleteFile.sh,picture.txt保存待删除文件的文件路径,picture文件夹下面有三张待删除图片a/b/c.jpgdeleteFile.sh脚本如下:#!/bin/bash#…

linux 内核级资源查看,Linux资源管理

前一篇博客介绍了利用 cgroup 来控制进程的 CPU和内存使用情况, 这次补上使用 cgroup 来控制进程的IO优先级的方法.前提条件如果想控制进程的IO优先级, 需要内核的支持, 内核编译时需要打开下面2个参数.CONFIG_BLK_CGROUPyCONFIG_CFQ_GROUP_IOSCHEDy查看是否开启这2个内核编译选…

linux cpu uuid 查看,Linux下查看UUID方法介绍

Linux下查看UUID方法介绍。1. sudo blkid/dev/sda1: UUID”9ADAAB4DDAAB250B” TYPE”ntfs”/dev/sdb1: UUID”B2FCDCFBFCDCBAB5″ TYPE”ntfs”/dev/sdb5: UUID”46FC5C74FC5C5FEB” TYPE”ntfs”/dev/sdb6: TYPE”swap” UUID”2cec6109-5bcf-45a3-ba1b-978b041c037f”/dev/s…

linux 自定义vi dd,Vim常用命令及配置方案

几句话很久之前就接触到vim,初学那阵觉得vim很酷炫,但确实对新手不是很友好。我也就简单看了下基本操作就上手了,但又不是长期在vim下工作,这就导致了每一次重新使用vim都要再去回温下基本操作,很是难受,所…

linux指纹登录实现原理,指纹识别技术原理与基于Linux系统的指纹识别门禁系统设计...

指纹作为人体的身体特征,具有唯一性、稳定性和不易盗用等特点。随着指纹识别理论逐渐成熟、指纹采集工具这一难题得到解决,指纹识别已经成为目前最广泛应用的生物识别之一,逐渐取代了传统的认证识别方式,广泛应用于金融、公安、证…

linux 搜索命令 历史,Linux 控制台神器:搜索历史命令 Ctrl + R ( ctrl + r to search the history command )...

Linux 控制台神器:搜索历史命令 Ctrl R ( ctrl r to search the history command )2013-01-29 15:30访问量: 23761分类:技术Linux下的神器 ctrl r (reverse-i-search ) 的使用方法: (reverse-i-search usage: )(press ctl r ) 输入任意…

linux 有名管道pipe,linux 用無名管道pipe和有名管道fifo實現線程間通信

1.pipe用與實現同一個進程下不同線程間的通信(跟IPC進程間通信中的具有血緣關系的進程通信實現方式一樣)#include #include #include #include #include using namespace std;void *func(void * fd){char str[] "this is write thread!\n";write( *(int*)fd, str, s…

linux apache 跨域,解决nginx/apache静态资源跨域访问问题详解

1. apache静态资源跨域访问找到apache配置文件httpd.conf找到这行#LoadModule headers_module modules/mod_headers.so把#注释符去掉LoadModule headers_module modules/mod_headers.so目的是开启apache头信息自定义模块在独立主机配置文件中新增headerHeader set Access-Contr…

linux wps历史版本下载,WPS Office 2019 For Linux 11.1.0.9604版携新更新发布下载

WPS Office 2019 For Linux 11.1.0.9604版本发布了,仅支持64位计算机,提供Deb和Rpm格式软件包下载。更新详情1、WPS公共:优化界面绘制相关api的调用效率。适配ibus和fcitx框架的输入法,解决无法输入中文,预输入显示等问…

Linux双独立显卡SLI,玩点新奇的 双显卡给你不同的“SLI”效果

显卡老是千篇一律的常规测试对于我们这些测试人员来说早就已经没有什么意思了,无非就是跑分,超频后跑分,拷机等等一些测试项目,常看我们测试的玩家应该也知道同芯片显卡除非是频率的差别非常大才会有较为明显的性能差距体现出来&a…

三个等价c语言表达式,C语言习题综合(20页)-原创力文档

第二章练习题—.选择题1. 以下选项中正确的实型常量2A 0 B 3. 1415 C 0.32910 D .8712.不合法的用户标识符A _123 B printf C A $ D Dim1.表达式3.51/2的计算结果是___2.对数学表达式 ,写出三个等价的c语言表达式_____}第三章 练习题一.选择题1.若a ,b,c都是int型变…

DSP C2000汇编语言,DSPC2000汇编指令

值。XT寄存器的低16位部分是TL寄存器。该寄存器能装载一个16位有符号数,能自动对该数进行符号扩展,然后将其送人32位XT寄存器。XT寄存器的高16位部分是T寄存器。该寄存器主要用来存储16位乘法操作之前的16位整数值。T寄存器也可以为一些移位操作设定移位…

c语言编程算法精选,c语言经典程序算法【DOC精选】.doc

c语言经典程序算法【DOC精选】c语言经典程序算法浏览次数:47017次悬赏分:15 | 解决时间:2007-9-14 10:02 | 提问者:liyufei05j3最佳答案经典C源程序100例【程序1】题目:有1、2、3、4个数字,能组成多少个互不…

android win10 驱动安装失败,解决在win10系统下小米手机驱动安装失败的具体步骤...

随着系统的升级越来越快,对于许多用户的系统都已经升级到win10系统了,win10系统在给用户带来方便的同时,有时候也会遇到一些小麻烦,比如说对于最新的Window10正式版系统而言,基本主流的手机驱动都能自动检测安装。不过…

z3735f android x86,英特尔的Atom Z3735F分析 全文总结_台电 X80HD_平板电脑评测-中关村在线...

硬件配置:英特尔64位提供性能保证台电X80HD双系统使用Intel Atom Z3735F四核处理器,最高睿频可达1.83GHz,其采用64位X86架构,搭载最新一代睿频加速技术,并拥有四核四线程,支持多任务同时处理。英特尔的Atom…

浏览器 android x86,360浏览器x86版下载

360浏览器x86版下载,是专门针对现在越来越多的win10和安卓双系统的国产平板电脑使用的安卓版app,例如台电平板,适用机型 适用于联想K800、联想K900、MOTO MT788、MOTO XT890、Acer联想平板等,只要安装了x86版本就可以愉快的玩耍啦,你还不赶快…

js百度地图android定位不准,百度地图js定位不准

浏览器H5定位即navigator.geolocation,通过IP或者域名的形式,如:http://172.21.3.82:8080 和http://b.cunzhang.com进行访问时,调用navigator.geolocation.getCurrentPosition,打开控制台,你会发现有以下错…