如何分解结构化的Hive Java UDAF输出?

时间:2018-08-03 09:21:54

标签: java hive user-defined-functions

我正在研究Hive UDAF,发现this code很有趣。它采用多个字段作为输入参数,并在第一个字段上计算最大值。它的最终输出以{"col0":4,"col1":"data-1,4"}之类的列表的形式给出,这是第一个给定字段最大时相应行的值。

我的问题是如何从maxagg.objects中提取特定数据。我尝试过如下

@Override
public Object terminate(AggregationBuffer agg) throws HiveException {
  MaxAgg maxagg = (MaxAgg) agg;
  return (Object) maxagg.objects[1];
}

我发现仅返回maxagg.objects[i]就会引发ClassCastException。 另外,我尝试返回return Arrays.asList(maxagg.objects).subList(0,1);,结果为{"col0":4,"col1":null}。因此分析表明此代码在initMapSide()中进行了输出转换。 我想知道如何做一些变通办法来获得特定的领域,即。仅在data-1,4时输出i=1

0 个答案:

没有答案