为什么Hive在表名Vs中的选择列上生成mapreduce作业,而不是从tablename中为select *生成mapreduce?HIVE:为什么Hive在表名Vs中的选择列上生成mapreduce作业,而不是从tablename中为select *生成mapreduce?
0
A
回答
0
只要你运行一个普通的'select *',就会创建一个fetch任务,而不是一个mapreduce任务,它只是转储数据,因为它不需要做任何事情。然而,无论何时执行“选择列”,地图作业都会内部挑选该特定列并提供输出。
还有一个提交这个错误,使'选择列'查询运行没有mapreduce。查看这里的详细信息:https://issues.apache.org/jira/browse/HIVE-887
3
当这样一个简单的语句执行select * from tablename
时,hive所做的仅仅是从存储在hdfs中的文件中获取数据,并将其以列状输出格式输出。基本上它产生一个像
hadoop fs -cat hdfs://schemaname/tablename.txt
hadoop fs -cat hdfs://schemaname/tablename.rc
hadoop fs -cat hdfs://schemaname/tablename.orc
或无论您的表格的文件存储在任何格式。
如果您尝试选择列或向查询中添加where子句或在表上使用任何聚合,MR会出现明显原因。
相关问题
- 1. 阅读oozie mapreduce动作中的hive表
- 2. Hive Stages mapreduce
- 3. 为什么HBase支持Hive表使用MapReduce
- 4. 无法在Tez上执行来自Hive的MapReduce作业
- 5. Hive没有启动mapreduce作业..在执行过程中卡住
- 6. hive-HBase ClassNotFound发生在做mapreduce工作时
- 7. 如何获取由Hive编译器生成的MapReduce Jobs源代码?
- 8. 在Hive SQL中生成日期
- 9. 如何让Hive同时运行mapreduce作业?
- 10. 为MongoDB调度MapReduce作业
- 11. Hive与Hadoop MapReduce之间的关系?
- 12. hive如何运行mapreduce算法?
- 13. 为什么不工作,其中作为HIVE返回数据
- 14. oozie中Hive操作的作业队列
- 15. Hive从表中选择复杂类型
- 16. Mapfile作为MapReduce作业的输入
- 17. 生成选择,而不是输入
- 18. 从Hadoop中的映射器生成多个输出文件MapReduce
- 19. 从Hive中选择数据列表中的列值
- 20. 更改在动态数据中为生成gridview而生成的Select语句?
- 21. Sailsjs原生Mapreduce
- 22. 如何在MapReduce中使用sqoop生成的类?
- 23. 停止MapReduce作业,RunningJob#killJob vs YarnClient#killApplication
- 24. Hive,SQL:为Hive表中100列以上的每一列返回NULL值COUNT
- 25. MapReduce阶段中使用的Sort是什么,为什么?
- 26. HbaseTestingUtility和MapReduce作业
- 27. 剖析MapReduce作业
- 28. 为什么生成long serialVersionUID而不是简单的1L?
- 29. 为什么PostgreSQL“SequenceGenerator”,而不是“IdentityGenerator”的Hibernate默认生成器?
- 30. 为什么TreeViewItems不是在Multibinding中生成的,除非可见?
如果您有多个节点会怎么样?选择*然后运行MR? – eych 2016-10-21 18:52:56
这就是HDFS的美丽。无论节点数量多少,它都会执行映射缩减作业。逻辑系统与物理系统分离。 – Neels 2016-10-25 18:23:12
好吧,所以如果你的数据在节点间传播,但你仍然只做'SELECT *',那么它不会做一个减少地图工作,对吧? – eych 2016-10-25 20:08:32