這篇文章討論了pig和hive的特性,
勝還是平?PigvsHive!!!
。開(kāi)發(fā)者通常處于選擇滿(mǎn)足業(yè)務(wù)需求的技術(shù)體系。 在hadoop體系中,pig和hive很相似,并能給出幾乎相同的結(jié)果,但是那種技術(shù)更適合特殊的業(yè)務(wù)場(chǎng)景了?這里列出了pig和hive的一些對(duì)比。PIG and Hive:
流類(lèi)型:
Pig是過(guò)程式數(shù)據(jù)流語(yǔ)言。過(guò)程式語(yǔ)言通常按照一步一步的執(zhí)行方式去編寫(xiě),你能夠控制和優(yōu)化每一步。
Hive更像sql,因此,它是聲明式語(yǔ)言,你要指定需要做什么而不是怎么做。Hive依靠自己的優(yōu)化器,因此hive中優(yōu)化是比較難的。
易用性:
Pig擁有新而不同的語(yǔ)法,需要額外的時(shí)間去學(xué)習(xí)。
Hive更像sql,開(kāi)發(fā)者會(huì)更興奮的去使用hive.
一般場(chǎng)景:
推薦程序開(kāi)發(fā)者使用Pig。主要原因是它計(jì)算高效,當(dāng)你的查詢(xún)有大量的join和filter時(shí),pig更合適。
Hive更多的用于分析,它遵循Hadoop和DatawareHouse一些規(guī)則。一般更傾向使用Hive產(chǎn)生報(bào)表。如果你的查詢(xún)join和filters比較少可以繼續(xù)使用Hive,相反,如果查詢(xún)擁有很多join,Hive的性能也許會(huì)降低。
數(shù)據(jù)類(lèi)型:
Pig能高效處理結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
Hive能高效的處理結(jié)構(gòu)化數(shù)據(jù)。
中間層:
Pig使用變量表示數(shù)據(jù),當(dāng)要存儲(chǔ)中間結(jié)果,可以很容易的用變量存起來(lái)并在以后引用,
電腦資料
《勝還是平?PigvsHive!!!》(http://www.shangyepx.com)。Hive使用表表示數(shù)據(jù),存儲(chǔ)中間結(jié)果比較困難,需要?jiǎng)?chuàng)建一個(gè)表,并從其他的表插入進(jìn)去。因此,呈現(xiàn)一個(gè)復(fù)雜的查詢(xún)時(shí),可能需要幾百行的代碼。
調(diào)試方式:
Pig可以使用本地模式調(diào)試。
Hive使用本來(lái)模式調(diào)試比較復(fù)雜并且很費(fèi)時(shí)。
擴(kuò)展性:
Pig中UDF很容易。
Hive中UDF相對(duì)麻煩。
維護(hù)性:
Pig比Hive差一點(diǎn)。
Hive比較簡(jiǎn)單。
持久性:
Pig中可能不會(huì)保留變量的值,每一次你都需要重新執(zhí)行pig代碼重新獲取變量值。
Hive中即使退出當(dāng)前會(huì)話(huà)外部表依然存在,因?yàn)橥獠勘硪廊恢赶騂DFS文件。
開(kāi)發(fā)時(shí)間:
pig開(kāi)發(fā)需要更多的時(shí)間,更多的依賴(lài)對(duì)pig的熟悉度。
SQL語(yǔ)句,開(kāi)發(fā)時(shí)間很少。
兼容性:
RDBMS與Pig兼容有點(diǎn)復(fù)雜,因?yàn)閜ig的語(yǔ)法完全不同。
大部分在RDBMS中的sql可以在Hive中執(zhí)行,只有少數(shù)需要修改。
數(shù)據(jù)量:
Pig處理大數(shù)據(jù)很高效。
Hive有時(shí)會(huì)內(nèi)存泄露和不靠譜的性能,然而,有一些參數(shù)可以進(jìn)行調(diào)整和定位問(wèn)題。