Hive中Beeline提交的SQL查询同Hive客户端提交的SQL查询处理流程有何异同
我没读过代码,不过你可以参考下面这张图: 【Hive中Beeline提交的SQL查询同Hive客户端提交的SQL查询处理流程有何异同】 
(图片来源:http://infolab.stanford.edu/~ragho/hive-icde2010.pdf)JDBC和ODBC连接都是通过Thrift Server来接入,然后发送给Driver而CLI(Beeline也一样)是直接与Driver直接与Driver交互贴一张Hive的架构图吧:
(图片来源:https://cwiki.apache.org/confluence/display/Hive/Design)而后面做的事情包括:词法分析/语法分析使用antlr将SQL语句解析成抽象语法树语义分析从Megastore获取模式信息,验证SQL语句中队表名,列名,以及数据类型的检查和隐式转换逻辑计划生成生成逻辑计划--算子树逻辑计划优化对算字数进行优化,包括列剪枝,分区剪枝,谓词下推等物理计划生成将逻辑计划生成包含由MapReduce任务组成的DAG的物理计划物理计划执行将DAG发送到Hadoop集群进行执行这些都是没有区别的。
■网友
1、hive客户端是在本地做sql的编译,然后将hql翻译成mr任务提交到hadoop。而beeline实际上是对SQLLine的封装,实际上是调用hiveserver2来进行查询的。2、从权限控制角度来讲,目前hive的权限控制有两种,一种是基于对应hdfs操作权限的控制机制(Storage Based Authorization in the Metastore Server),一种是符合SQL规范的控制机制(SQL Standards Based Authorization in HiveServer2),前者适合于提供给RD的权限控制(可以防止别人误删你的表),后者适合于提供给hive的BI用户的权限控制(可以控制到表或字段可见级别)。后者更细致,更符合数据仓库的权限控制。但是后者只能用在beeline方式下,不能用在命令行中。3、hive推荐使用beeline
■网友
一个走rpc,一个本进程内调用啊
推荐阅读
- 人死了之后死亡证明会被提交给啥部门嘛
- 易车原创|特斯拉公司提交建厂申请 或明年起在中国投产EV充电器
- ebay要求买家提交各种身份证明、财务证明,是否合理
- web应用中,提交的表单数据前端验证和后端验证同时存在是否是一种常识
- 怎样避免无状态的RESTful中订单的重复提交
- 新区|
- |为赖账提交虚假证据 溧阳一男子被法院罚款5000元
- 公安部要求网站提交用户数据的一事是否属实
- 亚马逊KYC审核需要提交哪些东西呢
- 中职|相关决议提交人大审议广州将推进打通中职升学通道
