Hive没有运行Map Reduce with"其中"子句

时间:2015-07-01 14:41:44

标签: hadoop mapreduce hive

我在HDFS上尝试使用简单的Hive。 问题是,当我运行" where子句"时,查询没有运行map reduce。但是,它运行map reduce for count(*),甚至group by子句。

此处的数据和查询结果为:

创建外部表: CREATE EXTERNAL TABLE testtab1( id STRING,org STRING) 行格式分隔 字段由','终止 存储为文本文件 location' / usr / ankuchak / testtable1';

简单选择*查询:

0:jdbc:hive2://> select * from testtab1;

15/07/01 07:32:46 [主要]:错误hdfs.KeyProviderCache:用密钥[dfs.encryption.key.provider.uri]找不到uri来创建keyProvider !! 好 + --------------- + --------------- + - +

| testtab1.id | testtab1.org |

+ --------------- + --------------- + - +

| ankur | idc |

|用户| idc |

|别人的ssi |

+ --------------- + --------------- + - +

选择3行(2.169秒)

计数(*)查询

0:jdbc:hive2://>从testtab1中选择count(*);

查询ID = ankuchak_20150701073407_e7fd66ae-8812-4e02-87d7-492f81781d15 总工作量= 1 从1开始工作1 编译时确定的减少任务数:1 为了更改reducer的平均负载(以字节为单位):   设置hive.exec.reducers.bytes.per.reducer = 为了限制减速器的最大数量:   设置hive.exec.reducers.max = 为了设置恒定数量的减速器:   设置mapreduce.job.reduces = 15/07/01 07:34:08 [HiveServer2-Background-Pool:Thread-40]:ERROR mr.ExecDriver:yarn 15/07/01 07:34:08 [HiveServer2-Background-Pool:Thread-40]:WARN mapreduce.JobResourceUploader:Hadoop命令行选项解析未执行。实现Tool接口并使用ToolRunner执行您的应用程序以解决此问题。 开始工作= job_1435425589664_0005,跟踪网址= http://slc02khv:8088/proxy/application_1435425589664_0005/ 杀死命令= / scratch / hadoop / hadoop / bin / hadoop job -kill job_1435425589664_0005 Stage-1的Hadoop作业信息:映射器数量:1;减速机数量:1 15/07/01 07:34:16 [HiveServer2-Background-Pool:Thread-40]:WARN mapreduce.Counters:Group org.apache.hadoop.mapred.Task $ Counter已弃用。请改用org.apache.hadoop.mapreduce.TaskCounter 2015-07-01 07:34:16,291 Stage-1 map = 0%,reduce = 0% 2015-07-01 07:34:23,831 Stage-1 map = 100%,reduce = 0%,累计CPU 1.04秒 2015-07-01 07:34:30,102 Stage-1 map = 100%,reduce = 100%,累计CPU 2.41秒 MapReduce累计CPU总时间:2秒410毫秒 结束工作= job_1435425589664_0005 MapReduce工作推出: Stage-Stage-1:Map:1 Reduce:1累积CPU:2.41 sec HDFS读取:6607 HDFS写入:2 SUCCESS 总MapReduce CPU耗时:2秒410毫秒 行

+ ------ + - +

| _c0 |

+ ------ + - +

| 3 |

+ ------ + - +

选择了1行(23.527秒)

按查询分组:

0:jdbc:hive2://>通过org选择org,count(id)来自testtab1组;

查询ID = ankuchak_20150701073540_5f20df4e-0bd4-4e18-b065-44c2688ce21f 总工作量= 1 从1开始工作1 未指定的reduce任务数。根据输入数据大小估算:1 为了更改reducer的平均负载(以字节为单位):   设置hive.exec.reducers.bytes.per.reducer = 为了限制减速器的最大数量:   设置hive.exec.reducers.max = 为了设置恒定数量的减速器:   设置mapreduce.job.reduces = 15/07/01 07:35:40 [HiveServer2-Background-Pool:Thread-63]:ERROR mr.ExecDriver:yarn 15/07/01 07:35:41 [HiveServer2-Background-Pool:Thread-63]:WARN mapreduce.JobResourceUploader:未执行Hadoop命令行选项解析。实现Tool接口并使用ToolRunner执行您的应用程序以解决此问题。 开始工作= job_1435425589664_0006,跟踪网址= http://slc02khv:8088/proxy/application_1435425589664_0006/ 杀死命令= / scratch / hadoop / hadoop / bin / hadoop job -kill job_1435425589664_0006 Stage-1的Hadoop作业信息:映射器数量:1;减速机数量:1 15/07/01 07:35:47 [HiveServer2-Background-Pool:Thread-63]:WARN mapreduce.Counters:Group org.apache.hadoop.mapred.Task $ Counter已弃用。请改用org.apache.hadoop.mapreduce.TaskCounter 2015-07-01 07:35:47,200 Stage-1 map = 0%,reduce = 0% 2015-07-01 07:35:53,494 Stage-1 map = 100%,reduce = 0%,累计CPU 1.05秒 2015-07-01 07:36:00,799 Stage-1 map = 100%,reduce = 100%,累计CPU 2.53秒 MapReduce累计CPU总时间:2秒530毫秒 结束工作= job_1435425589664_0006 MapReduce工作推出: Stage-Stage-1:Map:1 Reduce:1累积CPU:2.53 sec HDFS读取:7278 HDFS写:14 SUCCESS 总MapReduce CPU耗时:2秒530毫秒 行

+ ------- + ------ + - +

|组织| _c1 |

+ ------- + ------ + - +

| idc | 2 |

| ssi | 1 |

+ ------- + ------ + - +

选择了2行(21.187秒)

现在简单的where子句:

0:jdbc:hive2://>从testtab1中选择*,其中org =' idc';

+ -------------- + --------------- + - +

| testtab1.id | testtab1.org |

+ -------------- + --------------- + - +

+ -------------- + --------------- + - +

未选择任何行(0.11秒)

如果你能提供一些指示,那将是很棒的。 如果您需要这方面的进一步信息,请与我们联系。

此致 ANKUR

2 个答案:

答案 0 :(得分:1)

Here,相同错误的详细信息并最近已修复。尝试验证您正在使用的版本

答案 1 :(得分:1)

您上次查询中发生了地图作业。因此,并不是地图减少不会发生。但是,应在上次查询中返回一些行。这里可能的罪魁祸首是由于某种原因它没有找到值“idc”的匹配。检查您的表并确保Ankur和用户组包含字符串idc。

试试看你是否得到任何结果:

Select * from testtab1 where org rlike '.*(idc).*';

Select * from testtab1 where org like '%idc%';

这些将获取具有包含字符串'idc'的值的任何行。祝你好运!