pig 基礎(chǔ).md

## pig的數(shù)據(jù)類型

###1:基本數(shù)據(jù)類型

?###2:復(fù)雜類型(map废岂、 tuple创倔、 bag)

? ??2.1 map: 是一種chararray 和數(shù)據(jù)元素之間的鍵值對映射畏纲。

? ? 2.2 tuple 是一定長的碗短,包含有序pig數(shù)據(jù)元素的集合裹赴。(一個tuple相當(dāng)于sql中的一行羡忘,而tuple的字段相當(dāng)于sql中的列睛低。)

? ??? ? ? ? ??tuple常量使用圓括號來指示tuple結(jié)構(gòu)案狠,使用逗號來劃分tuple中的字段。如(‘bob’,55)

? ? 2.3?bag:是一個無序的tuple集合钱雷,因為它無序骂铁,所以無法通過位置獲取bag中的tuple。?

? ??? ??? ??? ??bag常量是通過花括號進(jìn)行劃分的罩抗,bag中的tuple用逗號來分隔拉庵,如{(‘bob’,55),(‘sally’,52),(‘john’,25)}。



? ###3 pig 與 數(shù)據(jù)庫表的對比

3.1 關(guān)系(relation)--> 表 ?:一個關(guān)系是一個包

3.2 ?包(bag)--> ? ? ? ? ? ?: 一個bag是一個tuple的集合套蒂,bag使用的是{}

3.3 ?元組( tuple)--> 行 ? ? ? ?:并不要求每一個“元組”都含有相同數(shù)量的字段钞支,并且也不會要求各“元組”中在相同位置處的字段具有相同的數(shù)據(jù)類型(太隨意了,是吧操刀?)

## 一數(shù)據(jù)準(zhǔn)備(上傳數(shù)據(jù)到hdfs)烁挟,

### 1: student.txt

```

001,Rajiv,Reddy,21,9848022337,Hyderabad

002,siddarth,Battacharya,22,9848022338,Kolkata

003,Rajesh,Khanna,22,9848022339,Delhi

004,Preethi,Agarwal,21,9848022330,Pune

005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar

006,Archana,Mishra,23,9848022335,Chennai

007,Komal,Nayak,24,9848022334,trivendram

008,Bharathi,Nambiayar,24,9848022333,Chennai

```

### 2:student_details.txt

```

001,Rajiv,Reddy,21,9848022337,Hyderabad

002,siddarth,Battacharya,22,9848022338,Kolkata

003,Rajesh,Khanna,22,9848022339,Delhi

004,Preethi,Agarwal,21,9848022330,Pune

005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar

006,Archana,Mishra,23,9848022335,Chennai

007,Komal,Nayak,24,9848022334,trivendram

008,Bharathi,Nambiayar,24,9848022333,Chennai

```

### 3customers.txt

```

1,Ramesh,32,Ahmedabad,2000.00

2,Khilan,25,Delhi,1500.00

3,kaushik,23,Kota,2000.00

4,Chaitali,25,Mumbai,6500.00?

5,Hardik,27,Bhopal,8500.00

6,Komal,22,MP,4500.00

7,Muffy,24,Indore,10000.00

customers1 = LOAD 'hdfs://mycluster/test/test_data/customers.txt' USING PigStorage(',')

? ?as (id:int, name:chararray, age:int, address:chararray, salary:int);

```?

### 4?orders.txt

```

102,2009-10-08 00:00:00,3,3000

100,2009-10-08 00:00:00,3,1500

101,2009-11-20 00:00:00,2,1560

103,2008-05-20 00:00:00,4,2060

?orders = LOAD 'hdfs://mycluster/test/test_data/orders.txt' USING PigStorage(',')

? ?as (oid:int, date:chararray, customer_id:int, amount:int);

```

## 二: 加載數(shù)據(jù)

? ? 1:load 數(shù)據(jù)

```

student = LOAD '/test/test_data/student_data.txt' USING PigStorage(',')

? ? as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );

# 指定集群(hdfs://mycluster)

student_details = LOAD 'hdfs://mycluster/test/test_data/student_details.txt' USING PigStorage(',')

? ?as (id:int, firstname:chararray, lastname:chararray, age:int, phone:chararray, city:chararray);

```


## 三 診斷運算符(Diagnostic)

?Load?語句會簡單地將數(shù)據(jù)加載到Apache Pig中的指定關(guān)系中。要驗證Load語句的執(zhí)行骨坑,必須使用Diagnostic運算符撼嗓。Pig Latin提供四種不同類型的診斷運算符:

1 Dump 運算符 (執(zhí)行)

2 Describe 運算符 ? (查看數(shù)據(jù)schema)

3 Explanation 運算符

4 Illustrate 運算符 ?( 以表的形式呈現(xiàn)數(shù)據(jù))

## 四 Pig Group 運算符

###1?讓我們按照年齡關(guān)系中的記錄/元組進(jìn)行分組

```

# 按一列分組

group_data = group student by age;

# 按多列分組 ??

group_data = Group student_details by (age, city);

```

## 五 pig join?

1: Self-join

2: Inner-join

3: Outer-join ? left join, right join, and full join

? ??? ?注:Outer-join 與 inner-join 的區(qū)別就是至少返回一個關(guān)系中的所有行。

###5.1 self join

```

# self-join用于將表與其自身連接欢唾,就像表是兩個關(guān)系一樣且警,臨時重命名至少一個關(guān)系。通常礁遣,在Apache Pig中斑芜,為了執(zhí)行self-join,我們將在不同的別名(名稱)下多次加載相同的數(shù)據(jù)祟霍。那么杏头,將文件?customers.txt?的內(nèi)容加載為兩個表,如下所示浅碾。customers1 = LOAD 'hdfs://mycluster/test/test_data/customers.txt' USING PigStorage(',')

? ?as (id:int, name:chararray, age:int, address:chararray, salary:int);

customers2 = LOAD 'hdfs://mycluster/test/test_data/customers.txt' USING PigStorage(',')

? ?as (id:int, name:chararray, age:int, address:chararray, salary:int);


customers3 = join customers1 by id, customers2 by id

```

### 5.2 Inner join(內(nèi)部鏈接)

Inner Join使用較為頻繁大州;它也被稱為等值連接。當(dāng)兩個表中都存在匹配時垂谢,內(nèi)部連接將返回行厦画。基于連接謂詞(join-predicate),通過組合兩個關(guān)系(例如A和B)的列值來創(chuàng)建新關(guān)系根暑。查詢將A的每一行與B的每一行進(jìn)行比較力试,以查找滿足連接謂詞的所有行對。當(dāng)連接謂詞被滿足時排嫌,A和B的每個匹配的行對的列值被組合成結(jié)果行畸裳。

```

?coustomer_orders = JOIN customers1 BY id, orders BY customer_id;

```

### 5.3 ? Outer Join

Outer Join:與inner join不同,outer join返回至少一個關(guān)系中的所有行淳地。outer join操作以三種方式執(zhí)行:

```

# Left-Join

?outer_left = join customers1 by id left outer, orders by customer_id;

#Right-Join

? outer_right= join customers1 by id right outer, orders by customer_id;

#Full-JJoin

outer_full= join customers1 by id full outer, orders by customer_id;

```

### 5.4 多條件鏈接

```

coustomer_orders = JOIN customers1 BY (id, salary) , orders BY customer_id, amount);

```

## pig 去重

注:pig的distinct 按照元組去重(正行)怖糊,想要實現(xiàn)按照字段去重就需要借助groupBy

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市颇象,隨后出現(xiàn)的幾起案子伍伤,更是在濱河造成了極大的恐慌,老刑警劉巖遣钳,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扰魂,死亡現(xiàn)場離奇詭異,居然都是意外死亡蕴茴,警方通過查閱死者的電腦和手機(jī)劝评,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倦淀,“玉大人蒋畜,你說我怎么就攤上這事』翁” “怎么了百侧?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵砰识,是天一觀的道長能扒。 經(jīng)常有香客問我,道長辫狼,這世上最難降的妖魔是什么初斑? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮膨处,結(jié)果婚禮上见秤,老公的妹妹穿的比我還像新娘。我一直安慰自己真椿,他們只是感情好鹃答,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著突硝,像睡著了一般测摔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天锋八,我揣著相機(jī)與錄音浙于,去河邊找鬼。 笑死挟纱,一個胖子當(dāng)著我的面吹牛羞酗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播紊服,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼檀轨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了欺嗤?” 一聲冷哼從身側(cè)響起裤园,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎剂府,沒想到半個月后拧揽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡腺占,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年淤袜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衰伯。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡铡羡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出意鲸,到底是詐尸還是另有隱情烦周,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布怎顾,位于F島的核電站读慎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏槐雾。R本人自食惡果不足惜夭委,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望募强。 院中可真熱鬧株灸,春花似錦、人聲如沸擎值。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸠儿。三九已至屹蚊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淑翼。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工腐巢, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玄括。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓冯丙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親遭京。 傳聞我的和親對象是個殘疾皇子胃惜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 2017/3/14 RDBMS:關(guān)系型數(shù)據(jù)庫管理系統(tǒng) 關(guān)系模型獨立于語言 SQL有幾種不同類型的語言:數(shù)據(jù)定義語言...
    ancherl閱讀 1,627評論 0 6
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)哪雕,斷路器船殉,智...
    卡卡羅2017閱讀 134,661評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法斯嚎,內(nèi)部類的語法利虫,繼承相關(guān)的語法,異常的語法堡僻,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • 說明本次redis集群安裝在rhel6.8 64位機(jī)器上糠惫,redis版本為3.2.8,redis的gem文件版本為...
    讀或?qū)?/span>閱讀 14,746評論 3 9
  • 實驗步驟 注意:由于數(shù)據(jù)庫對大小寫不敏感钉疫,因此大寫和小寫都可以使用硼讽。 1. HiveQL:數(shù)據(jù)操作 (1)進(jìn)入Hi...
    d6a12a231881閱讀 2,275評論 0 0