Hive return 如果与函数一起使用则没有值

Hive return no values if used with function

我对配置单元有一个奇怪的问题shell。我使用 Apache 原始包创建了一个 Hadoop 系统。我用tez

为了测试系统,我毫无问题地将纽约出租车数据加载到配置单元中。该数据集有大约 1100 万行。如果我在配置单元 shell 中执行 select staments,它正在工作。如果我使用这样的函数

select count(*) from yellow;

select sum(trip_distance) from yellow where trip_distance is not null;

进程运行没有任何问题,但return只是OK。如果我在 spark-sql 中做同样的事情,我就会得到答案。另外,如果我按语句分组,结果是一样的。

table定义是

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,但结果没有区别。

如果我计算行数,其他 tables 也只显示 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

好的,这是解决方案。 Hive 和 tez 日志显示也完全没有问题。 tez 给出的行数也是正确的。

所以唯一可能的问题可能是 hive 和 tez 之间的通信。由于某些未知原因,mapred-site.xml 没有任何价值,因为在开始时它已被设置。在我将它设置回正确的值 yarn-tez 后它起作用了。