蜂巢上的火花 - 为啥不“选择*”产生火花应用程序/执行程序?
Posted
技术标签:
【中文标题】蜂巢上的火花 - 为啥不“选择*”产生火花应用程序/执行程序?【英文标题】:hive on spark - why doesn't 'select *' spawn spark app/executors?蜂巢上的火花 - 为什么不“选择*”产生火花应用程序/执行程序? 【发布时间】:2019-03-29 13:12:12 【问题描述】:我已经在 Spark(执行引擎)上设置了 Hive (v2.3.4)。
这将启动一个 spark 应用程序/执行程序:
select count(*) from s.t where h_code = 'KGD78' and h_no = '265'
为什么不启动 spark 应用程序/执行程序:
select * from s.t where h_code = 'KGD78' and h_no = '265'
【问题讨论】:
【参考方案1】:这 - 第二种情况 - 是由于不太知名的 "hive.fetch.task.conversion" 参数。
根据设置方式,Hive 可以启动单个“获取任务”,而不是 Map Reduce 作业,即使使用过滤器(即 where 子句)。
如果您选择 * 或非分区列,它将启动 fetch 任务而不是 MR 作业 - 单线程。单线程并不总是一件好事。 count(*) 应该说明一切,您可能需要进行大量处理,第二种情况可以看作是光标。
您可以在 hive-site.xml 中将参数更改为“minimal”或“none”来避免这种类型的处理。
很好看。
【讨论】:
以上是关于蜂巢上的火花 - 为啥不“选择*”产生火花应用程序/执行程序?的主要内容,如果未能解决你的问题,请参考以下文章