hive xml serde是乙個基於hive serde(序列化/反序列化)框架的xml處理庫。它依賴於apache mahout專案中的xmlinputformat,根據特定的開始和結束標記將輸入檔案分解成xml片段。 xml serde的本質其實是使用xpath處理器查詢xml片段來填充hive表。
準備資料:
首先將jar包新增到hive中,將jar新增到hive中有很多種方式,這裡我們採用新增臨時jar的方法
add jar /home/hadoop/hive_jar/hivexmlserde-
1.0.5
.3.jar;
注意:如果在hive中整合了spark sql請用spark sql完成本操作
建表語句:
create
table ebay_listing(seller_name string,
seller_rating bigint
, bidder_name string,
location string, bid_history map
, item_info map
)row format serde 'com.ibm.spss.hive.serde2.xml.xmlserde'
with serdeproperties (
"column.xpath.seller_name"
="/listing/seller_info/seller_name/text()"
,"column.xpath.seller_rating"
="/listing/seller_info/seller_rating/text()"
,"column.xpath.bidder_name"
="/listing/auction_info/high_bidder/bidder_name/text()"
,"column.xpath.location"
="/listing/auction_info/location/text()"
,"column.xpath.bid_history"
="/listing/bid_history/*"
,"column.xpath.item_info"
="/listing/item_info/*"
)stored as
inputformat 'com.ibm.spss.hive.serde2.xml.xmlinputformat'
outputformat 'org.apache.hadoop.hive.ql.io.ignorekeytextoutputformat'
tblproperties (
"xmlinput.start"=""
,"xmlinput.end"=""
);
載入資料:
load
data
local inpath "/home/hadoop/hive_data/ebay.xml"
into
table ebay_listing;
接下來進行測試:
select seller_name, bidder_name, location, bid_history[
"highest_bid_amount"
], item_info[
"cpu"
]from ebay_listing
結果:
seller_name bidder_name location bid_history[highest_bid_amount] item_info[cpu]
cubsfantony [email protected] usa/chicago $620.00 pentium iii 933 system
ct-inc [email protected] usa/los angeles $680.00 intel pentium iii 800eb-mhz coppermine cpu
ct-inc [email protected] usa/los angeles $1
,025.00 intel pentium iii 933eb-mhz coppermine cpu
bestbuys4systems wizbang4 allentown, pa 18109 $610.00 genuine intel pentium iii 1000mhz processor
[email protected] [email protected] los angeles, ca $535.00 intel pentium iii 800mhz
time taken: 2.197 seconds, fetched 5
row(s)
成功將xml檔案解析為 relational table ! Berkeley DB使用全解
在開發桌面級應用程式時,常常需要用到可持續儲存技術,做為儲存程式在退出之前所使用的資料,如變數,物件,視窗位置,大小.一般我們會使用office access這類桌面型檔案資料庫,或者是使用登錄檔.但是它們都有一些不盡人意的缺陷.比如 1.mdb檔案無法在沒有安裝office的系統上訪問,直少得需要...
crontab使用祥解
名稱 crontab 使用許可權 所有使用者 使用方式 crontab u user file crontab u user 說明 crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。u user 是指設定指定 user 的時程表,這個前提是你必須要有...
Python使用ElementTree解析XML
elementtree 元素樹 elementtree是xml解析庫,已經在python2.5之後被包括在標準庫中。elementtree感覺就像乙個輕量級的dom,具有方便使用 十分友好的api。除了 可復用之外,它執行速度快,消耗記憶體較少。這裡我們重點推薦使用elementtree。如果需要使...