一.背景
?pxf適用于聯(lián)邦數(shù)據(jù)的查詢工腋,支持多種數(shù)據(jù)源蟋恬,如Hadoop、hive、關(guān)系數(shù)據(jù)庫。支持多個異構(gòu)數(shù)據(jù)源出刷,并只查詢數(shù)據(jù)源中少量數(shù)據(jù)集漆魔,而避免對數(shù)據(jù)集執(zhí)行ETL操作。
二.PXF架構(gòu)
圖1
三八拱、代碼結(jié)構(gòu)
1.物理結(jié)構(gòu)
圖2
2.接口定義
1)/pxf/{version}/Fragmenter/getFragments
i)獲取查詢的分片信息枷邪,例如:基于JDBC查詢中參數(shù)PARTITION_BY嘶卧,就會得到分區(qū)信息专甩,用以支持多個segment進(jìn)行并行查詢。
ii)FragmenterResource.java的getFragments函數(shù)
2)/pxf/<version>/Bridge/
i)查詢數(shù)據(jù),下推查詢命令到數(shù)據(jù)源系統(tǒng),如通過JDBC或API。
ii)BridgeResource.java的read函數(shù)取董,結(jié)果以MediaType.APPLICATION_OCTET_STREAM輸出孽鸡。
3)/pxf/{version}/Writable/stream
i)寫數(shù)據(jù),向外部系統(tǒng)寫數(shù)據(jù)估盘,如通過JDBC或API。
ii)WritableResource.java的stream故河,輸入為MediaType.APPLICATION_OCTET_STREAM衷快。
3.代碼邏輯圖
1)getFragments序列圖
圖3
2)讀數(shù)據(jù)
圖4
四先誉、代碼路徑
https://github.com/greenplum-db/pxf/tree/master/server
原文:http://www.reibang.com/writer#/notebooks/39475326/notes/73564736