在触发查询时,客户端如何联系impalad deamon? 当客户端触发必须由impala执行的查询时,后台究竟会发生什么?
答案 0 :(得分:1)
以impala-shell为例,它是ImpalaShell Python类扩展cmd.Cmd。用户将:
shell中的 1)connect ip:port
,它将调用do_connect(..)
并通过thrift连接到Impala后端。并将一个thrift客户端创建为self.imp_service = ImpalaService.Client(protocol)
2)select xxx from table...
将调用do_select(...)
和self.imp_service.query(query)
,这将是一个thrfit rpc。
3)然后由void ImpalaServer::query(QueryHandle&, const Query&)
在Impalad端执行rpc查询:
rpc调用与每个片段的每个主机并行发出。
父片段将一直等到子片段完成。
4)当所有片段完成后,数据将在fetch()
之后显示在屏幕上,这是来自客户端的节俭电话。