Greenplum · 源碼閱讀 · PXF的pxf-service源碼分析

一.背景

?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進行并行查詢。

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.itdecent.cn/writer#/notebooks/39475326/notes/73564736

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • 一.背景 pxf適用于聯(lián)邦數(shù)據(jù)的查詢,支持多種數(shù)據(jù)源,如Hadoop、hive、關(guān)系數(shù)據(jù)庫。支持多個異構(gòu)數(shù)據(jù)源,并...
    sinwaj閱讀 1,340評論 0 1
  • (1)搭建前臺系統(tǒng)。 (2)完成首頁導(dǎo)航菜單。(學(xué)習jsonp) (3)完成CMS內(nèi)容管理系統(tǒng)。 (4)完成首頁大...
    kelaody閱讀 505評論 0 0
  • ## 代碼層級梳理 #### 代碼層級 ![UTOOLS1588253419016.png](https://jo...
    Johnny韓源閱讀 1,470評論 0 1
  • 漸變的面目拼圖要我怎么拼? 我是疲乏了還是投降了? 不是不允許自己墜落, 我沒有滴水不進的保護膜。 就是害怕變得面...
    悶熱當乘涼閱讀 4,480評論 0 13

友情鏈接更多精彩內(nèi)容