標籤:
Pig
Pig是一種資料流語言,用來快速輕鬆的處理巨大的資料。Pig包含兩個部分:Pig Interface,Pig Latin。Pig可以非常方便的處理HDFS和HBase的資料,和Hive一樣,Pig可以非常高效的處理其需要做的,通過直接操作Pig查詢可以節 省大量的勞動和時間。
當你想在你的資料上做一些轉換,並且不想編寫MapReduce jobs就可以用Pig.
Hive
起源於FaceBook,Hive在Hadoop中扮演資料倉儲的角色。建立在Hadoop叢集的最頂層,對儲存在Hadoop群上的資料提供類SQL的介面進行操作。你可以用 HiveQL進行select,join,等等操作。
如果你有資料倉儲的需求並且你擅長寫SQL並且不想寫MapReduce jobs就可以用Hive代替。
Pig VS Hive
Hive更適合於資料倉儲的任務,Hive主要用於靜態結構以及需要經常分析的工作。Hive與SQL相似促使 其成為Hadoop與其他BI工具結合的理想交集。
Pig賦予開發人員在大資料集領域更多的靈活性,並允許開發簡潔的指令碼用於轉換資料流以便嵌入到較大的 應用程式。
Pig相比Hive相對輕量,它主要的優勢是相比於直接使用Hadoop Java APIs可大幅削減代碼量。正因為如此,Pig仍然是吸引大量的軟體開發人員。
Hive和Pig都可以與HBase組合使用,Hive和Pig還為HBase提供了高層語言支援,使得在HBase上進行資料統計處理變的非常簡單
在Hive中可以執行 插入/刪除 等操作,但是Pig中我沒有發現有可以 插入 資料的方法,請允許我暫且認為這是最大的不同點吧。
Schemas
Hive中至少還有一個“表”的概念,但是Pig中我認為是基本沒有表的概念,所謂的表建立在Pig Latin指令碼中,對與Pig更不要提metadata了。
Partitions
Pig中沒有表的概念,所以說到分區對於Pig來說基本免談,如果跟Hive說“分區”(Partition)他還是能明白的。
Server
Hive可以依託於Thrift啟動一個伺服器,提供遠程調用。 找了半天壓根沒有發現Pig有這樣的功能,如果你有新發現可以告訴我,就好像有人開發了一個Hive的REST
Shell
在Pig 你可以執行一些個 ls 、cat 這樣很經典、很cool的命令,但是在使用Hive的時候我壓根就沒有想過有這樣的需求。
Web Interface
Hive有,Pig無
JDBC/ODBC
Pig無,Hive有
HBase
HBase作為面向列的資料庫運行在HDFS之上,HDFS缺乏隨即讀寫操作,HBase正是為此而出現。HBase以Google BigTable為藍本,以索引值對的形式儲存。項目的目標就是快速在主機內數十億行資料中定位所需的資料並訪問它。
HBase是一個資料庫,一個NoSql的資料庫,像其他資料庫一樣提供隨即讀寫功能,Hadoop不能滿足即時需要,HBase正可以滿足。如果你需要即時訪問一些資料,就把它存入HBase。
你可以用Hadoop作為待用資料倉庫,HBase作為資料存放區,放那些進行一些操作會改變的資料。
pig、hive以及hbase的作用