当一个查询被触发时,客户机如何联系impalad deamon?当客户端触发一个必须由impala执行的查询时,在后台到底发生了什么?
s3fp2yjn1#
以impala shell为例,它是一个impalashell python类,扩展了cmd.cmd。用户将:
connect ip:port
do_connect(..)
self.imp_service = ImpalaService.Client(protocol)
select from table...
do_select(...)
self.imp_service.query(query)
void ImpalaServer::query(QueryHandle&, const Query&)
fetch()
1条答案
按热度按时间s3fp2yjn1#
以impala shell为例,它是一个impalashell python类,扩展了cmd.cmd。用户将:
connect ip:port
在shell中,它将调用do_connect(..)
并通过thrift连接到 Impala 后端。一个节俭客户机被创建为self.imp_service = ImpalaService.Client(protocol)
2)select from table...
在shell中,它将调用do_select(...)
以及self.imp_service.query(query)
将被称为thrfit rpc。3) 然后在impalad上并行执行rpc查询
void ImpalaServer::query(QueryHandle&, const Query&)
:协调器解析查询并创建一个片段ast,并将每个片段分配给一组主机执行;
rpc调用是为每个片段并行地向每个主机发出的。
父片段将等待子片段完成。
4) 当所有片段完成后,数据将显示在屏幕上
fetch()
这是一个来自客户的节俭电话。