我在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
答案 0 :(得分:1)
Here,相同错误的详细信息并最近已修复。尝试验证您正在使用的版本
答案 1 :(得分:1)
您上次查询中发生了地图作业。因此,并不是地图减少不会发生。但是,应在上次查询中返回一些行。这里可能的罪魁祸首是由于某种原因它没有找到值“idc”的匹配。检查您的表并确保Ankur和用户组包含字符串idc。
试试看你是否得到任何结果:
Select * from testtab1 where org rlike '.*(idc).*';
或
Select * from testtab1 where org like '%idc%';
这些将获取具有包含字符串'idc'的值的任何行。祝你好运!