2015年4月25日 星期六

0425 hadoop


進階、業界應用

==========================

課程介紹 :

25/26 著重在Pig
寫Pig(high level)  比 MapReduce還多

Pig 實例


5/2 /3

Mongo DB

5/9 /10

Hive
Impala
實例

5/17/24/31

Spark

Vpon 移動性廣告

TrendMicro

趨勢科技 (防毒軟體)


=================================================================



什麼是Pig?


以簡單的語言

提供高階語言轉化成MapReduce 應用
是逐行寫碼執行

Pig & SQL & Hive


Hive 支援SQL 60-70%語法




適合用於ETL


Hive 語法最後加 ' ; '


Pig(Hive)

處理的對象是table (relation)
Filter(Where):將符合所需的資訊拉出來
Join:兩張表合併
Group:將資料做總合運算

一張大tbale

裡面會有小table (又稱:bag)

GENERATE GROUP (再次產生GROUP)


===================================


操作


<terminal>


pig 


出現grunt 即可




USING PigStorage :用來去load資料 針對文字檔 告訴pig資料格式是用什麼隔開

                                      <EX:欄位是用 ' \t'  隔開,列是用  '\n'  隔開 >

chararray 字串


Pig  : schema or read <需要用到前才去定義>

MSSQL: schema or write <B+ tree > 速度快但是不能承載大量的資料

Group:group key (ex: year)



++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


DUMP & STORE

<操作> Terminal

1. 確認桌面上的pig101檔

2. hadoop fs -ls /

3. ls
4. HDFS NameNode <Utilities → Browse the file system  查看cloudera資料夾>
5. 將data包丟進pig101資料夾

  • hadoop fs -ls /       <查詢>
  • hadoop fs -mkdir /user/cloudera/pig101      <在cloudera之下建立資料夾(pig101)>
  • hadoop fs -put  ~/Desktop/pig101/data /user /cloudera/pig101      <將桌面上的data丟進cloudera的pig101中>
  • cd ~/Desktop/pig101/pig                                                                       <移動到桌面上的pig101的pig>
  • pig -f max_temp.pig                                                                                 <執行max_temp.pig>

顯示方法1:

○ 在Terminal 直接Show result :

(1949 , 111)
(1950 , 22)


---------------------------------------------------------------------------------------------------------------------

顯示方法2:
在Terminal
pig
grunt > 要執行檔案內的python程式直接複製貼上也可以ru

result:
(1949 , 111)
(1950 , 22)


========++++========++++========++++========++++========++++========







========++++========++++========++++========++++========++++========
Stream

<操作> Terminal
※ 確認python 資料夾裡面有 is_goodquality.py 檔

1. open   pig max_temp_filiter_stream.pig                    < 並確認DEFINE & SHIP 兩行沒有被--隱藏 >
    ※ DEFINE & SHIP 為路徑名稱 & 引用的檔案

2. pig -f max_temp_filiter_stream.pig                         < 執行max_temp.pig >


========++++========++++========++++========++++========++++========

UDF (User Defined load Functions) → 自訂義方法(腳本)  <包含.jar  & 原始檔>

.jar:針對不同格式資料去寫處理方式,在UDF內執行
原始檔:待處理的原始資料

目的:寫在UDF內,.jar檔是用來處理原始檔 ,且下指令去呼叫jar檔去run    

下一步: 將兩個資料夾(pig101 & audi)  放進 CLOUDERA中的WORDSPACE  

○ Eclipse:
下一步:建立新專案 (java project)  <針對.java  右鍵>
下一步:Build path → Configure Bulid path
下一步:Add Extened Jar

下一步:filesystem /usr/lib/   <新增jar 修改至正確>
  • hadoop
  • hadoop mr
  • hadoop lib 
  • pig 
下一步:eclipse → Export<整個project>→jar.file→存在桌面

下一步:CutLoadFunc.java  → Export  → jar file
下一步:點選桌面的pig101 → workspace → pig101→pig→year_stats.pig
                < 修改路徑 > /home/cloudera/Desktop/Workspace/pig101.jar

<操作> Terminal
pig
grunt > 複製year_stats.pig內的code貼上

result:(1901,6,6565,6565)

===========================================

※ 補充 <將檔案上傳至cloudera資料夾>
下一步:Firefox → HDFS NameNode
下一步:hadoop fs -put ~/Desktop/pig101/1901 /user/cloudera/data

沒有留言:

張貼留言