日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

pig连接oracle数据库,Pig安装讲解

發布時間:2024/9/27 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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;

總結

以上是生活随笔為你收集整理的pig连接oracle数据库,Pig安装讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。