Hive 为什么输出是这样的?为什么第二行在第二列选择堆栈中给出空值(2,A,10,date,2015-01-01,1,B,date,2)

Hive 为什么输出是这样的?为什么第二行在第二列选择堆栈中给出空值(2,A,10,date,2015-01-01,1,B,date,2),hive,bigdata,hiveql,hortonworks-data-platform,hdp,Hive,Bigdata,Hiveql,Hortonworks Data Platform,Hdp,为什么输出是这样的?为什么第二行在第二列中给出NULL值选择堆栈(2,'A',10,日期'2015-01-01',1,'B',日期'2015-02-02',2): 0:jdbc:hive2://sandboxhdp.hortonworks.com:1>选择堆栈(2,'A',10,日期'2015-01-01',1,'B',日期'2015-02-02',2)作为(col0,col1,col2,col3); 错误:编译语句时出错:失败:UDFArgumentException参数2的类型(int)应等

为什么输出是这样的?为什么第二行在第二列中给出
NULL
选择堆栈(2,'A',10,日期'2015-01-01',1,'B',日期'2015-02-02',2)

0:jdbc:hive2://sandboxhdp.hortonworks.com:1>选择堆栈(2,'A',10,日期'2015-01-01',1,'B',日期'2015-02-02',2)作为(col0,col1,col2,col3);
错误:编译语句时出错:失败:UDFArgumentException参数2的类型(int)应等于参数6的类型(日期)(state=42000,code=40000)
0:jdbc:hive2://sandboxhdp.hortonworks.com:1>选择堆栈(2,'A',10,日期'2015-01-01',1,'B',20,日期'2015-02-02')作为(col0,col1,col2,col3);
信息:编译命令(queryId=hive_20191225124022_380b3a4c-9870-4f5c-89c8-a696af39f985):选择堆栈(2,'A',10,日期'2015-01-01',1,'B',20,日期'2015-02-02')作为(col0,col1,col2,col3)
信息:语义分析已完成(retry=false)
信息:返回配置单元架构:架构(FieldSchema:[FieldSchema(名称:col0,类型:string,注释:null)],FieldSchema(名称:col1,类型:int,注释:null),FieldSchema(名称:col2,类型:date,注释:null),FieldSchema(名称:col3,类型:int,注释:null)],属性:null)
信息:已完成编译命令(queryId=hive_20191225124022_380b3a4c-9870-4f5c-89c8-a696af39f985);所用时间:0.545秒
信息:执行命令(queryId=hive_20191225124022_380b3a4c-9870-4f5c-89c8-a696af39f985):选择堆栈(2,'A',10,日期'2015-01-01',1,'B',20,日期'2015-02-02')作为(col0,col1,col2,col3)
信息:已完成执行命令(queryId=hive_20191225124022_380b3a4c-9870-4f5c-89c8-a696af39f985);所用时间:0.006秒
信息:好的
|col0 | col1 | col2 | col3|
|A | 10 | 2015-01-01 | 1|
|B |空| 2015-02-02 | 1|
选择2行(0.594秒)

在Hive 1.2中,select语句引发异常:

select stack(2,'A',10,date '2015-01-01',1,'B',date '2015-02-02',2);
失败:UDFArgumentException参数2的类型(int)应等于参数6的类型(日期)

堆栈(2)的第一个参数表示有两个元组这些元组应具有相同的模式。 第一个元组:

'A',10,date '2015-01-01',1 --this one contains 4 columns
第二个元组:

'B',date '2015-02-02',2 --this one contains 3 columns
在“B”之后添加一些int第二列以匹配第一个元组。它可以为null,但应该在第二个元组中。我加了20条:

select stack(2,'A',10,date '2015-01-01',1,'B',20, date '2015-02-02',2);

OK
A       10      2015-01-01      1
B       20      2015-02-02      2
Time taken: 0.363 seconds, Fetched: 2 row(s)

但是为什么我的表中有空值呢run@AbhishekNimje您的配置单元版本的工作方式不同。。。不仅如此。我注意到在第二行的结果数据集col3中,它应该是2,但它是1,奇怪的是,它并不总是在不同的情况下给出相同的结果versions@AbhishekNimje不管怎样,固定句子在你的蜂巢里也会起同样的作用