2013-07-01 62 views

回答

1

以impala-shell爲例,它是一個ImpalaShell Python類,擴展爲cmd.Cmd。用戶將:

1)connect ip:port在shell中,它將調用do_connect(..)並通過節儉連接到Impala後端。和一個節儉客戶端作爲self.imp_service = ImpalaService.Client(protocol)

2)select xxx from table...在殼,這將調用do_select(...)self.imp_service.query(query)將被稱爲其爲thrfit RPC創建。

3)然後,將RPC查詢由void ImpalaServer::query(QueryHandle&, const Query&)在Impalad側執行:

  • 協調器解析查詢,並創建一個分段的AST,以及每個片段分配到一組主機來執行的;
  • rpc調用與每個主機的每個片段並行發出。父母片段將等到孩子片段完成爲止。

4)當所有片段完成後,將數據顯示在屏幕上fetch()後其爲從客戶端舊貨呼叫。

相關問題