使用hivexmlserde解析xml檔案

2021-10-01 03:31:00 字數 2531 閱讀 5031

​ 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。如果需要使...