如果与函数一起使用,Hive 不返回任何值
Posted
技术标签:
【中文标题】如果与函数一起使用,Hive 不返回任何值【英文标题】:Hive return no values if used with function 【发布时间】:2017-02-28 11:53:40 【问题描述】:我对 hive shell 有一个奇怪的问题。我使用 Apache 原始包创建了一个 Hadoop 系统。我用特兹。
为了测试系统,我将纽约出租车数据加载到 hive 中,没有任何问题。该数据集大约有 1100 万行。如果我确实在 hive shell 中选择了 staments,它就可以工作。如果我使用这样的功能
select count(*) from yellow;
或
select sum(trip_distance) from yellow where trip_distance is not null;
该过程运行没有任何问题,但只返回 OK。如果我在 spark-sql 中做同样的事情,我会得到答案。此外,如果我按语句分组,结果是相同的。
表定义是
CREATE TABLE `default.yellow` ( `VendorID` int , `tpep_pickup_datetime` timestamp , `tpep_dropoff_datetime` timestamp , `passenger_count` bigint , `trip_distance` float , `pickup_longitude` float , `pickup_latitude` float , `RatecodeID` bigint , `store_and_fwd_flag` string , `dropoff_longitude` float , `dropoff_latitude` float , `payment_type` bigint , `fare_amount` int , `extra` float , `mta_tax` float , `tip_amount` int , `tolls_amount` bigint , `improvement_surcharge` float , `total_amount` float ) COMMENT "yellow" stored as ORC
这是 ORC 格式。我也使用了 Parquet,但结果没有区别。
如果我计算行数,其他表格也只显示 OK 结果。
这里有一些示例行,如上所述,这是我用于测试的免费可用的纽约出租车数据。
2,2016-06-09 21:06:36.0,2016-06-09 21:13:08.0,2,0.79,-73.98336,40.760937,1,N,-73.97746,40.75398,2,6,0.5,0.5,0,0,0.3,7.3
2,2016-06-09 21:06:36.0,2016-06-09 21:35:11.0,1,5.22,-73.98172,40.736668,1,N,-73.981636,40.670242,1,22,0.5,0.5,4,0,0.3,27.3
2,2016-06-09 21:06:36.0,2016-06-09 21:13:10.0,1,1.26,-73.994316,40.751072,1,N,-74.004234,40.74217,1,6,0.5,0.5,1,0,0.3,9.36
2,2016-06-09 21:06:36.0,2016-06-09 21:36:10.0,1,7.39,-73.98236,40.77389,1,N,-73.92947,40.85154,1,26,0.5,0.5,1,0,0.3,28.3
【问题讨论】:
请提供表定义和一些示例行 检查 mapreduce 堆栈跟踪以获得更多见解。 我无法重现该问题。我有你将纽约出租车数据加载到蜂巢中吗?select * from yellow limit 10
能得到什么?
我得到 10 行作为输出。这没问题。我还测试了 max、min 和其他函数都具有相同的结果。没有输出 0 行。我感觉 tez 做错了什么。但直到现在我还不确定。
如果我将 hive 从 tez 切换回 map reduce,我会得到正确的输出。我必须重新部署 tez。它出了点严重的问题。
【参考方案1】:
好的,这就是解决方案。 Hive 和 tez 日志显示也完全没有问题。 tez 给出的行数也是正确的。
所以唯一可能的问题可能是 hive 和 tez 之间的通信。由于一些未知的原因,mapred-site.xml 没有价值,因为在开始时它被设置了。在我将其设置回正确的值 yarn-tez 后,它起作用了。
【讨论】:
以上是关于如果与函数一起使用,Hive 不返回任何值的主要内容,如果未能解决你的问题,请参考以下文章
解析:如果我将它与指针类型一起使用,“containedIn”将不返回任何内容
Presto:如果原始查询未返回任何行,则返回另一个表或虚拟值/表