Hive 未运行带有 "where" 子句的 Map Reduce(使用



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

以下是数据和查询结果:

创建外部表:Create External Table testtab1(id字符串,组织字符串)行格式分隔字段以","结尾存储为文本文件位置"/usr/ankuchak/testtable1";

简单选择*查询:

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

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

|testtab1.id|testtab1.org|

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

|ankur|idc|

|user|idc|

|其他人|ssi|

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

选择3行(2.169秒)

计数(*)查询

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

查询ID=ankuchak_20150701073407_e7fd66ae-8812-4e02-87d7-492f81781d15作业总数=1正在启动作业1(共1个)编译时确定的reduce任务数:1要更改减速器的平均负载(以字节为单位):设置hive.exec.reducers.bytes.per.reducer=为了限制减速器的最大数量:设置hive.exec.reducers.max=为了设置恒定数量的减速器:设置mapreduce.job.reduces=01年7月15日07:34:08[HiveServer2后台池:线程-40]:错误mr.ExecDriver:纱线01年7月15日07:34:08[HiveServer2后台池:Thread-40]:WARN mapreduce。JobResourceUploader:未执行Hadoop命令行选项解析。实现Tool接口并使用ToolRunner执行应用程序以解决此问题。正在启动作业=Job_1435425589664_0005,跟踪URL=http://slc02khv:8088/proxy/application_1435425589664_0005/Kill命令=/scratch/hadop/hadoop/bin/hadoop作业-Kill作业_1435425589664_0005第1阶段的Hadoop作业信息:映射器数量:1;减速器数量:101年7月15日07:34:16[HiveServer2后台池:Thread-40]:WARN mapreduce。计数器:不赞成使用Grouporg.apache.hadop.mapred.Task$Counter。请改用org.apache.hadoop.mapreduce.TaskCounter2015-07-01 07:34:16291阶段1映射=0%,减少=0%2015-07-01 07:34:3831阶段1映射=100%,减少=0%,累计CPU 1.04秒2015-07-01 07:34:30102阶段1映射=100%,减少=100%,累计CPU 2.41秒MapReduce累计CPU总时间:2秒410毫秒已结束作业=Job_1435425589664_0005MapReduce作业发布:阶段-1:映射:1减少:1累计CPU:2.41秒HDFS读取:6607 HDFS写入:2成功MapReduce CPU总花费时间:2秒410毫秒OK

+------+--+

|_c0|

+------+--+

|3|

+------+--+

选择1行(23.527秒)

按查询分组:

0:jdbc:hive2://>按组织从testtab1组中选择组织、计数(id);

查询ID=ankuchak_20150701073540_5f20df4e-0bd4-4e18-b065-44c2688ce21f作业总数=1正在启动作业1(共1个)未指定减少任务的数量。根据输入数据大小估计:1要更改减速器的平均负载(以字节为单位):设置hive.exec.reducers.bytes.per.reducer=为了限制减速器的最大数量:设置hive.exec.reducers.max=为了设置恒定数量的减速器:设置mapreduce.job.reduces=01年7月15日07:35:40[HiveServer2后台池:线程63]:错误mr.ExecDriver:纱线01年7月15日07:35:41[HiveServer2后台池:Thread-63]:WARN mapreduce。JobResourceUploader:未执行Hadoop命令行选项解析。实现Tool接口并使用ToolRunner执行应用程序以解决此问题。正在启动作业=Job_1435425589664_0006,跟踪URL=http://slc02khv:8088/proxy/application_1435425589664_0006/Kill命令=/scratch/hadop/hadoop/bin/hadoop作业-Kill作业_1435425589664_0006第1阶段的Hadoop作业信息:映射器数量:1;减速器数量:101年7月15日07:35:47[HiveServer2后台池:Thread-63]:WARN mapreduce。计数器:不赞成使用Grouporg.apache.hadop.mapred.Task$Counter。请改用org.apache.hadoop.mapreduce.TaskCounter2015-07-01 07:35:47200第1阶段映射=0%,减少=0%2015-07-01 07:35:53494阶段1映射=100%,减少=0%,累计CPU 1.05秒2015-07-01 07:36:00799阶段1映射=100%,减少=100%,累计CPU 2.53秒MapReduce累计CPU总时间:2秒530毫秒已结束作业=Job_1435425589664_0006MapReduce作业发布:阶段-1:映射:1减少:1累计CPU:2.53秒HDFS读取:7278 HDFS写入:14成功MapReduce CPU总花费时间:2秒530毫秒OK

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

|org|_c1|

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

|idc|2|

|ssi|1|

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

选择2行(21.187秒)

现在简单的where子句:

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

OK

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

|testtab1.id|testtab1.org|

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

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

未选择行(0.11秒)

如果你能给我一些建议就太好了。如果你需要这方面的进一步信息,请告诉我。

谨致问候,Ankur

Map作业正在您的上一个查询中发生。所以地图缩减并不是没有发生。但是,应该在上次查询中返回一些行。这里可能的罪魁祸首是,由于某种原因,它没有找到值"idc"的匹配项。检查您的表,并确保Ankur和user的组包含字符串idc。

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

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

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

它们将抓取任何具有包含字符串"idc"的值的行。祝你好运

这里是最近修复的相同错误的详细信息。尝试验证您正在使用的版本

相关内容

  • 没有找到相关文章

最新更新